2010-08-12 3 views

ответ

68

SELECT LEFT(field1,LOCATE(' ',field1) - 1)

Обратите внимание, что если строка в вопросе не содержит пробелов, это будет возвращать пустую строку.

+6

+1 не знал о 'LEFT' – soulmerge

+4

Он возвращает 'chara' с завершающим пробелом. Вам нужно уменьшить результат LOCATE, если в конце концов не нужен разделитель: SELECT LEFT (поле1, LOCATE ('', field1) - 1) – Enyby

+0

Это не сработает, если ваше основное поле не содержит пробела. Подстановка возвращает пустое значение вместо того, чтобы возвращать целую строку. . если мое поле содержит строку «test-possible-wrong-name», подстрока ничего не вернет вместо «test-possible-wrong-name». –

10

Для этого вам понадобится string operations. Предполагая, что каждое поле имеет по крайней мере один символ пробела:

SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table; 

Безопасный подход:

SELECT IF(
    LOCATE(' ', field1), 
    SUBSTR(field1, 0, LOCATE(' ', field1)), 
    field1 
) FROM your_table; 
+0

+1 для безопасной версии, хотя неясно, какой результат должен быть возвращен, когда поле не содержит пробела. – Mchl

+1

должен был изменить 0 для 1: 'SELECT SUBSTR (field1, 1, LOCATE ('', field1)) FROM your_table;' –

45

Ниже приведен другой способ, который работает и может казаться немного более простым для некоторых. Он использует SUBSTRING_INDEX MySQL function. A 1 возвращает все перед первым пространством, а -1 возвращает все после последнего пробела.

Это возвращает 'Чара':

SELECT SUBSTRING_INDEX(field1, ' ', 1) 

'Ослабляет' Возвращает:

SELECT SUBSTRING_INDEX(field1, ' ', -1) 

Подробности

Положительное значение будет искать указанный вами персонажа с самого начала строка и отрицательное значение начнутся с конца строки. Значение номера указывает количество вашего указанного символа для поиска, прежде чем возвращать оставшуюся часть строки. Если символ, который вы ищете, не существует, будет возвращено все значение поля.

В этом случае -2 будет возвращать все справа от второго до последнего пробела, которое не существует в этом примере, поэтому будет возвращено все значение поля.

+2

Это также работает, если есть строки, без пробела, например, «chara» также будет работать. – bernhardh

+2

Это отлично поработало над тем, чтобы получить основную + младшую версию строки версии с компонентами x.y.z. – thomthom

+2

Это работает лучше всего, если вы хотите вернуть все поле, если персонаж не найден. – stephentgrammer

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