Я хотел бы получить все символы в поле перед пространствомПолучить все символы перед пространством в MySQL
Например, если field1
является "chara ters"
Я хочу, чтобы вернуть "chara"
Что будет ли этот запрос выбора выглядеть?
Я хотел бы получить все символы в поле перед пространствомПолучить все символы перед пространством в MySQL
Например, если field1
является "chara ters"
Я хочу, чтобы вернуть "chara"
Что будет ли этот запрос выбора выглядеть?
SELECT LEFT(field1,LOCATE(' ',field1) - 1)
Обратите внимание, что если строка в вопросе не содержит пробелов, это будет возвращать пустую строку.
Для этого вам понадобится string operations. Предполагая, что каждое поле имеет по крайней мере один символ пробела:
SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table;
Безопасный подход:
SELECT IF(
LOCATE(' ', field1),
SUBSTR(field1, 0, LOCATE(' ', field1)),
field1
) FROM your_table;
+1 для безопасной версии, хотя неясно, какой результат должен быть возвращен, когда поле не содержит пробела. – Mchl
должен был изменить 0 для 1: 'SELECT SUBSTR (field1, 1, LOCATE ('', field1)) FROM your_table;' –
Ниже приведен другой способ, который работает и может казаться немного более простым для некоторых. Он использует SUBSTRING_INDEX MySQL function. A 1 возвращает все перед первым пространством, а -1 возвращает все после последнего пробела.
Это возвращает 'Чара':
SELECT SUBSTRING_INDEX(field1, ' ', 1)
'Ослабляет' Возвращает:
SELECT SUBSTRING_INDEX(field1, ' ', -1)
Подробности
Положительное значение будет искать указанный вами персонажа с самого начала строка и отрицательное значение начнутся с конца строки. Значение номера указывает количество вашего указанного символа для поиска, прежде чем возвращать оставшуюся часть строки. Если символ, который вы ищете, не существует, будет возвращено все значение поля.
В этом случае -2 будет возвращать все справа от второго до последнего пробела, которое не существует в этом примере, поэтому будет возвращено все значение поля.
Это также работает, если есть строки, без пробела, например, «chara» также будет работать. – bernhardh
Это отлично поработало над тем, чтобы получить основную + младшую версию строки версии с компонентами x.y.z. – thomthom
Это работает лучше всего, если вы хотите вернуть все поле, если персонаж не найден. – stephentgrammer
+1 не знал о 'LEFT' – soulmerge
Он возвращает 'chara' с завершающим пробелом. Вам нужно уменьшить результат LOCATE, если в конце концов не нужен разделитель: SELECT LEFT (поле1, LOCATE ('', field1) - 1) – Enyby
Это не сработает, если ваше основное поле не содержит пробела. Подстановка возвращает пустое значение вместо того, чтобы возвращать целую строку. . если мое поле содержит строку «test-possible-wrong-name», подстрока ничего не вернет вместо «test-possible-wrong-name». –