Я бы хотел поставить все символы в поле перед пробелом
Например, если field1
есть"chara ters"
Я хочу вернуть "chara"
Как бы выглядел этот оператор выбора?
Я бы хотел поставить все символы в поле перед пробелом
Например, если field1
есть"chara ters"
Я хочу вернуть "chara"
Как бы выглядел этот оператор выбора?
Ответы:
SELECT LEFT(field1,LOCATE(' ',field1) - 1)
Обратите внимание: если рассматриваемая строка не содержит пробелов, возвращается пустая строка.
select SUBSTRING_INDEX( field1, ' ', 1 ) from table;
будет выбор, если мы хотим иметь полную строку, если нет места.
SUBSTRING_INDEX
) «лучше» в качестве общего решения, потому что он будет сохранять значения, не содержащие разделителя, вместо того, чтобы давать пустое значение.
Ниже приведен еще один метод, который работает и некоторым может показаться немного более простым. Он использует функцию MySQL SUBSTRING_INDEX . 1 возвращает все до первого пробела, а -1 возвращает все после последнего пробела.
Это возвращает chara:
SELECT SUBSTRING_INDEX( field1, ' ', 1 )
Это возвращает 'ters':
SELECT SUBSTRING_INDEX( field1, ' ', -1 )
Детали
Положительное значение будет искать указанный вами символ с начала строки, а отрицательное значение будет начинаться с конца строки. Значение числа указывает количество указанного вами символа для поиска перед возвратом оставшейся части строки. Если искомого символа не существует, будет возвращено все значение поля.
В этом случае -2 вернет все, что находится справа от предпоследнего пробела, чего нет в этом примере, поэтому будет возвращено все значение поля.
Для этого вам понадобятся некоторые строковые операции . Предполагая, что в каждом поле есть хотя бы один пробел:
SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table;
Безопасный подход:
SELECT IF(
LOCATE(' ', field1),
SUBSTR(field1, 0, LOCATE(' ', field1)),
field1
) FROM your_table;
SELECT SUBSTR(field1, 1, LOCATE(' ', field1)) FROM your_table;