Я хотів би, щоб усі символи були в полі перед пробілом
Наприклад, якщо field1є"chara ters"
Я хочу, щоб воно повернулося "chara"
Як би виглядав цей вибраний вислів?
Я хотів би, щоб усі символи були в полі перед пробілом
Наприклад, якщо field1є"chara ters"
Я хочу, щоб воно повернулося "chara"
Як би виглядав цей вибраний вислів?
Відповіді:
SELECT LEFT(field1,LOCATE(' ',field1) - 1)
Зверніть увагу, що якщо рядок, про який йде мова, не містить пробілів, це поверне порожній рядок.
select SUBSTRING_INDEX( field1, ' ', 1 ) from table;буде вибір, якщо ми хочемо мати повний рядок, якщо місця немає.
SUBSTRING_INDEX) є "кращим" як загальне рішення, оскільки він збереже значення, які не містять роздільника, замість того, щоб отримати пусте значення.
Нижче наведено інший метод, який працює, а комусь може здатися дещо простішим. Він використовує функцію SUBSTRING_INDEX MySQL . A 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;