Sri*_*ine 7 regex mysql sql where-clause
有表名Students.我想提取名字以'n'或'p'或'y'开头的学生的名字.我知道在TSQL(MS SQL服务器)中,我可以按如下方式编写查询,它可以工作:
SELECT * FROM Students WHERE StudentName LIKE '[npy]%'
Run Code Online (Sandbox Code Playgroud)
但是当我在MySQL(phpmyadmin)中执行相同的查询时,我无法检索到正确的结果集.我尝试将学生姓名的字母转换为charlist中提到的相同案例.我做了一些谷歌搜索,发现在MySQL中我们需要将其指定为正则表达式.我执行了以下查询并得到了预期的结果.
SELECT * FROM Students WHERE StudentName REGEXP '[[:<:]]n | [[:<:]]p | [[:<:]]y'
Run Code Online (Sandbox Code Playgroud)
我想知道LIKE '[charlist]%'语法不能与MySQL一起使用的原因.是由于MySQL中的实现(MySQL不支持语法)还是我正在使用的phpmyadmin版本有问题?
对此有任何帮助表示高度赞赏.谢谢 :)
编写查询的方法更短:
SELECT * FROM Students WHERE StudentName REGEXP '^[npy]'
Run Code Online (Sandbox Code Playgroud)
如果您担心区分大小写,请执行以下操作:
SELECT * FROM Students WHERE StudentName REGEXP BINARY '^[npy]'
Run Code Online (Sandbox Code Playgroud)
在MySQL中,REGEXP模式匹配在值的任何位置都成功,这与LIKE模式必须匹配整个值的位置不同。
以下链接将为您提供更完整的答案: