我必须创建一个SQL查询来获取以特定字符开头的所有行,除非传递给(PHP)函数的参数是0,在这种情况下它应该得到每行不以A - Z开头(如#0-9。,$ etc)。
获取这些行的最简单,最快捷的方法是什么?
DB:MySQL 5.1
专栏:标题
答案 0 :(得分:7)
SELECT *
FROM mytable
WHERE title NOT RLIKE '^[A-Z]'
答案 1 :(得分:3)
SELECT *
FROM myTable
WHERE theColumn RLIKE '^[^A-Z]'
<强>解释强>:
使用RLIKE谓词时,括号内的模式代表括号内列出的任何一个字符(允许使用短划线表示范围,因为这里A-Z是“A到Z”)。
注意两个^字符;它们有非常明显的含义:
第一个代表“字符串的开头”
括号内的另一个^字符表示该模式应与括号列表中此后列出的不的任何字符匹配。
有关详细信息,请参阅mySQL documentation on pattern matching。
也可以写成如下
...
WHERE theColumn NOT RLIKE '^[A-Z]'
提醒:独立于括号内的语法,上面显示的模式都使用“前端通配符”,只能通过表/索引扫描进行处理(或至少部分扫描),对于较大的表,这可能效率相对较低。