MySql, как я могу получить конкретное значение перед конкретным символом в где пункт конкретного столбца - PullRequest
0 голосов
/ 28 февраля 2019

Я хотел бы получить конкретное значение перед конкретным символом из определенного столбца.

Например .. enter image description here

В столбце города я хочу только строковое значениеперед - символом, я имею в виду только ABBEYARD из столбца города.

Я использовал следующий запрос, но не работал.

SELECT * FROM `locations` WHERE town = SUBSTRING_INDEX('ABBOTSFORD','-',1)

Примечание: Iнужно только в WHERE Clouse.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Если вы хотите вернуть названия городов, потому что в столбце town они объединены с postcode, то вам нужно изменить select, а не where часть:

SELECT id, TRIM(SUBSTRING_INDEX(town, '-', 1)) townname, postcode, state FROM locations

и, возможно, добавьте эту where часть:

WHERE TRIM(SUBSTRING_INDEX(town, '-', 1)) = 'ABBOTSFORD'
0 голосов
/ 28 февраля 2019

Я думаю, что вы хотите:

WHERE SUBSTRING_INDEX(town, '-', 1) = 'ABBOTSFORD'

Однако я бы порекомендовал написать это как:

WHERE town LIKE 'ABBOTSFORD-%'

Это может фактически использовать индекс.

Кроме того, похоже, что ваши данные могут иметь пробелы вокруг '-'.Если это так, они также должны быть в строках сравнения.

WHERE SUBSTRING_INDEX(town, ' - ', 1) = 'ABBOTSFORD'
WHERE town LIKE 'ABBOTSFORD -%'

Вы можете повторить SUBSTRING_INDEX() в SELECT, чтобы получить только город или число, которое следует за ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...