2016-11-15 54 views
1

SELECT 'pharase' REGEXP '[^a-zA-Z]+' - 验证该短语不包含英文字符(或不是?)。MySQL REXEXP不起作用

为什么查询SELECT '123g' REGEXP '[^a-zA-Z]+' -> 1显示1而不是0?

回答

2

要检查一个字符串只包含英文字符,使用

SELECT 'pharase' REGEXP '^[a-zA-Z]+$' 

其中:

  • ^ - 断言的位置在字符串
  • [a-zA-Z]+的开始 - 1个或多个ASCII字母
  • $ - 字符串末尾

SELECT '123g' REGEXP '[^a-zA-Z]+' -> 1显示1因为字符串包含123,非字母,部分匹配找到具有REGEXP(不像LIKE需要一个完整的字符串匹配)。

+0

您可以使用'NOT REGEXP'[A-Za-z]'来获取不包含英文字母的条目。或'REGEXP'^ [^ A-Za-z] + $'' –

+0

如何在不使用'NOT REGEXP'('NOT REGEXP [a-zA-z]')的情况下检查短语是否包含英文字符? – sibipi

+0

请检查我上面更新的评论。 –