SELECT * FROM dbname WHERE text = 'a%'
(this can get all the `text` fields which begin with the letter "a".)
但是如何获得第一个字母的字段!= [a-z]?
例如:
\"hello\" // this first letter begin as \ not range in a-z
いけ // also first letter not begin range in a-z
...
may also have a white space as the first character.
那你如何使用php mysql查询来获得第一个字母!=[a-z]
所有这些类型的结果?
答案 0 :(得分:8)
试试这个:
SELECT * FROM dbname WHERE text REGEXP '^[^a-zA-Z]';
即如果您希望它不区分大小写(大写或小写)。如果你想允许大写字母A-Z,那么只需使用:
SELECT * FROM dbname WHERE text REGEXP '^[^a-z]';
基本上,正则表达式表示匹配字符串开头没有字母a-z的任何字符串。
答案 1 :(得分:2)
使用REGEXP
/RLIKE
:
SELECT * FROM dbname WHERE text REGEXP '^[^a-z]'
答案 2 :(得分:1)
SELECT * FROM dbname WHERE text NOT REGEXP '^[a-z]';
答案 3 :(得分:1)
非REGEXP解决方案是使用BETWEEN:
SELECT * FROM dbname WHERE LEFT(text, 1) NOT BETWEEN 'a' AND 'Z';
这应该比使用REGEXP更快,因为MySQL可以在BETWEEN查询上使用索引,而不能在REGEXP查询上使用。
但是,我没有可用的基准,不应该很难测试。