Как я могу запросить поля, содержащие данный текст в MySQL? - PullRequest
40 голосов
/ 09 ноября 2011
SELECT stuff REGEXP 'itunes' as is_itunes;

В этом MySQL-запросе, если в «stuff» есть слово «itunes», он помечает его как itunes.

Однако я хочу сказать «начнем с».Как я могу проверить «начать с», а не где-нибудь в тексте?

Ответы [ 5 ]

82 голосов
/ 09 ноября 2011
SELECT ... WHERE stuff LIKE 'itunes%';

Здесь % служит символом подстановки, поэтому это будет соответствовать строки с полем stuff, равным любому из itunes, itunesfoo, itunes1, ...

Дополнительная информация: Оператор SQL LIKE в W3Schools .

7 голосов
/ 09 ноября 2011

Добавьте символ каретки, он представляет начало строки:

SELECT stuff REGEXP '^itunes' as is_itunes;

Однако LIKE 'itunes%', как предложил Марк, должно быть намного быстрее, особенно если ваши индексы настроены правильно.

5 голосов
/ 12 мая 2015

Для индексированного поля гораздо лучше сделать:

select ... where stuff >='itunes' AND stuff < 'itunet'

Это не приведет к полному сканированию таблицы и не будет использовать индекс.

3 голосов
/ 17 ноября 2015
SELECT ... WHERE LEFT(stuff, 6) = 'itunes';
0 голосов
/ 20 сентября 2016
SELECT ... WHERE stuff REGEXP '[[:<:]]itunes';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...