2016-06-12 5 views
1

У меня есть атрибут в MYSQL таблице «primaryCamera», которая имеет значение, какИзвлечение значения Integer из атрибута строки в Mysql

Camera 8 MP, 3264 x 2448 pixels, Carl Zeiss optics, optical image stabilization, autofocus, dual 

Я хочу перечислить мобильные больше или равные 8MP, что точный запрос в MYSQL, который работает для меня.

Пожалуйста, помогите мне.

+0

Я искал «LIKE», но это не хорошо. Требуется любое регулярное выражение. – razaulmustafa

+1

'Камера 8 MP' или' Camera 9 MP' - это то, что вы хотите получить, и 'Camera 7 MP' нет. Разве эта колонка выглядит как этот формат 'Camera X MP'? – Blank

+0

Эта колонка имеет различные номера, такие как 9MP, 3MP, 12MP. Мне нужен запрос, который используется с меньшим или большим, чем число. Например, у меня есть запрос. SELECT 'primaryCamera' FROM table_name WHERE' primaryCamera' REGEXP '[8] «Он работает нормально. Но есть и другое целое число в столбце. Как уже упоминалось выше. Что я могу сделать – razaulmustafa

ответ

0

использование подстрока, синтаксис:

ВЫБРАТЬ SUBSTR («строка», начало, длина)

заменить строку здесь с запросом

+0

Пожалуйста, дайте мне запрос. У меня есть атрибут PrimaryCamera, и я хочу выбрать мобильные телефоны с камерой более 8 Мп. – razaulmustafa

1

Если данные под primaryCamera столбца в следующий формат, то запрос, указанный ниже, может выполнить эту работу.

Формат:Camera X MP.....

Запрос:

SELECT 
primaryCamera 
FROM table_name 
WHERE 
CAST(SUBSTRING(@str FROM LOCATE('Camera',@str)+LENGTH('Camera') FOR (LOCATE('MP',@str)-(LOCATE('Camera',@str)+LENGTH('Camera')))) AS UNSIGNED) > 8; 

Объяснение:

  • LOCATE('Camera',@str) возвращает индекс начала строки Camera.
  • LENGTH('Camera') возвращает длину строки Camera, которая составляет 6.
  • (LOCATE('MP',@str) возвращает индекс начала строки MP.

Пример:

Учитывая,

primaryCamera = 'Camera 8 MP, 3264 x 2448 pixels, Carl Zeiss optics, optical image stabilization, autofocus, dual'

StartIndex строки Camera = 1

длина Camera = 6

начальный индекс строки MP = 10.

Целочисленное значение, которое вы ищете, находится в пределах этого диапазона [7,10].

SUBSTRING(string FROM START_INDEX_OF_DESIRED_SUBSTRING FOR LENGTH_YOU_WANT_TO_EXTRACT) работает следующим образом.`

Для того, чтобы получить, что вам нужно сделать, это:

START_INDEX_OF_DESIRED_SUBSTRING = StartIndex of Camera + Length of Camera

LENGTH_YOU_WANT_TO_EXTRACT = Start position of string MP - START_INDEX_OF_DESIRED_SUBSTRING

SUBSTRING(primaryCamera FROM START_INDEX_OF_DESIRED_SUBSTRING FOR LENGTH_YOU_WANT_TO_EXTRACT);

Примечание: Вы должны хранить атрибуты вашего продукта (например Camera) в разных столбцах под другой таблицей. В противном случае вы скоро займетесь множеством громоздких задач для обработки даже самой простой задачи.

+0

Это не работает. Не могли бы вы переписать это в этом формате. 8MP. У меня нет «камеры» в начале – razaulmustafa

+0

Покажите мне настоящие данные в колонке 'primaryCamera'. – 1000111

+0

SELECT 'primary' FROM specification_new_vastgsm WHERE LOCATE ('MP',' primary') и 'primary'> = 8 ..... Эта работа для меня – razaulmustafa

Смежные вопросы