php mysql查询首字母!= [a-z]

时间:2011-08-27 22:06:38

标签: php mysql

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]所有这些类型的结果?

4 个答案:

答案 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查询上使用。

但是,我没有可用的基准,不应该很难测试。