2012-04-13 2 views
2

Я использую выражение regulear-им MySQL, как этотMysql выберите запрос с использованием Regex

select * from table1 where 
table1.name 
REGEXP '[[:<:]]1.1[[:>:]]' 

запрос показывает результаты, чье имя поле имеет значение 1.1.1 также. Как это

pk name 
5 1.1 
6 1.1.1 

, но мне нужно, чтобы соответствовать только 1,1

Есть идеи?

ответ

2
select * from table1 where 
table1.name 
REGEXP '^1.1$' 

гарантирует, что только 1.1 допускаются (но 1X1 или 111 потому, что точка соответствует любому символу, - если вы хотите, чтобы соответствовать буквальной точке, используйте ^1\.1$).

Конечно, теперь возникает вопрос, почему вы хотите использовать регулярное выражение вообще, поскольку это просто буквальная строка, которую вы соответствуете, а не шаблон переменной.

Вашего регулярное выражение не удалось, потому что вы использовали Пуск-/с прекращением слова якорей, которые соответствуют между алфавитно-цифровыми символами и не-буквенно-цифровыми символами (или началом/концом строки), а так как [[:>:]] матчей между 1 и ., регулярным выражением соответствует 1.1.1 хотя бы частично.

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