2014-01-03 8 views
0

Я выполнил следующий запрос в своей локальной базе данных, который содержит имена, начинающиеся с m, u, e, но по какой-то причине этот запрос ничего не возвращает. Я пытался искать, но не нашел решения.wildcard query not working mysql

Запрос:

SELECT * 
FROM umer 
WHERE name LIKE '[MUE]%' 

То же самое для этого запроса

SELECT * 
FROM umer 
WHERE name LIKE '[e-u]%' 

Вот снимок моей базы данных.

enter image description here

Что я делаю неправильно?

Привет

+0

ли LIKE поддерживает регулярное выражение ? Я предполагаю, что это '[e-u]' is, * right *? –

+0

yep правильно в соответствии с стандартами mysql – Naruto

+0

Является ли ваше имя таблицы umer'? – sarwar026

ответ

3

Как указано под Pattern Matching, LIKE выполняет согласование простого шаблона, с использованием литералов и подстановочных знаков только. Он не может выполнять сложные совпадения, например, вы пытаетесь сделать.

Однако, можно объединить несколько таких моделей, используя логическую связку:

SELECT * FROM umer WHERE name LIKE 'M%' OR name LIKE 'U%' OR name LIKE 'E%' 

Или использовать RLIKE выполнить более сложное согласование с регулярным выражением:

SELECT * FROM umer WHERE name RLIKE '^[MUE]' 
+0

ok спасибо, но как насчет этого 'SELECT * FROM Customers WHERE City LIKE '[bsp]%';' запрос, упомянутый в W3SCHOOL? – Naruto

+1

@Naruto: Я считаю, что такие шаблоны являются нестандартными, проприетарными расширениями T-SQL, которые не поддерживаются MySQL. Использование W3Schools в качестве источника информации - это, как правило, [очень плохая идея] (http://www.w3fools.com/); [Справочные руководства по MySQL] (http://dev.mysql.com/doc/) являются тщательными и авторитетными - я рекомендую вам обратиться к ним вместо этого. – eggyal