我想写一个查询,其名称的第一个字符具有 a 或 b 或 c 或 c-g


I want to write a query which name having first character having a or b or c or c-g

我想写一个查询,其中第一个字符具有abcc-g的名称。我有按字母顺序排列的姓名列表A-Z.我想按字母顺序过滤 3 个步骤A-GG-MN-Z

通过单击A-G记录将显示第一个字符从A-G

mysql_query("select * from users where name like "A%" or name like "B%" or name like "C%" or name like "D%" or name like "E%" or name like "F%" or name like "G%"");

但是我不想写几次类似的

那么有没有简单的方法而不是像几次一样写。

你可以

试试

mysql_query("select * from users where LOWER(SUBSTR(name, 1, 1)) IN ('a','b','c','d','e','f','g')");

REGEXP在这里可以很好地工作:

SELECT ........ WHERE `name` REGEXP '^[a-g]'

或者,为了更好地利用索引:

... WHERE `name` < 'G'

有一些方法可以实现这一点:

首先:你可以用.. OR LIKE ..语法来做到这一点,就像你描述的那样。

第二:使用 SUBSTRING() 传入IN运算符:

SELECT * FROM t WHERE SUBSTRING(name, 1,1) IN ('A', 'B', 'C')

或使用 ORD()

SELECT * FROM t WHERE ORD(SUBSTRING(name, 1,1)) BETWEEN ORD('A') AND ORD('C')

第三:使用正则表达式:

SELECT * FROM t WHERE name REGEXP '^[ABC]'