LIKE'[charlist]%'语法在MySQL中不起作用(phpMyAdmin)

时间:2014-10-09 18:15:46

标签: mysql sql regex where-clause

有一个名为Students的表格。我想提取名字以'n'或'p'或'y'开头的学生的名字。我知道在TSQL(MS SQL服务器)中,我可以按如下方式编写查询,它可以工作:

SELECT * FROM Students WHERE StudentName LIKE '[npy]%'

但是当我在MySQL(phpmyadmin)中执行相同的查询时,我无法检索到正确的结果集。我尝试将学生姓名的字母转换为charlist中提到的相同案例。我做了一些谷歌搜索,发现在MySQL中我们需要将其指定为正则表达式。我执行了以下查询并得到了预期的结果。

SELECT * FROM Students WHERE StudentName REGEXP '[[:<:]]n | [[:<:]]p | [[:<:]]y'

我想知道LIKE '[charlist]%'语法不能与MySQL一起使用的原因。是由于MySQL中的实现(MySQL不支持语法)还是我正在使用的phpmyadmin版本有问题?

对此有任何帮助,我们非常感谢。谢谢:))

1 个答案:

答案 0 :(得分:5)

编写查询的方法甚至更短:

SELECT * FROM Students WHERE StudentName REGEXP '^[npy]'

如果您担心区分大小写:

SELECT * FROM Students WHERE StudentName REGEXP BINARY '^[npy]'

在MySQL中,REGEXP模式匹配在值中的任何位置都成功,这与模式必须与整个值匹配的LIKE不同。

以下链接将为您提供更完整的答案:

MySQL Pattern Matching