Php 如何使用sql显示名称从首字母A-D开始的结果

Php 如何使用sql显示名称从首字母A-D开始的结果,php,mysql,Php,Mysql,我想显示db名称表的结果,我只想显示以a-D开头的名称,就像以a、b、c和D开头一样。我想知道我们是否可以在LIKE子句中使用多个值,如LIKE a%、b%、c%、d%。我想知道它是否会起作用,是否有更合适的方法来实现这一点。您可以使用多个类似的子句,由或分隔: SELECT * FROM names WHERE name LIKE 'A%' OR name LIKE 'B%' OR name LIKE 'C%' OR name LIKE 'D%' 或者可以使用正则表达式(REGEXP): 编

我想显示db名称表的结果,我只想显示以a-D开头的名称,就像以a、b、c和D开头一样。我想知道我们是否可以在LIKE子句中使用多个值,如LIKE a%、b%、c%、d%。我想知道它是否会起作用,是否有更合适的方法来实现这一点。

您可以使用多个
类似的
子句,由
分隔:

SELECT * FROM names WHERE name LIKE 'A%' OR name LIKE 'B%' OR name LIKE 'C%' OR name LIKE 'D%'
或者可以使用正则表达式(
REGEXP
):

编辑

下面是另一种使用
UCASE
SUBSTR
中的
的方法:

SELECT * FROM names WHERE UCASE(SUBSTR(name, 1, 1)) IN ('A', 'B', 'C', 'D')

您可以使用多个
类似的
子句,由
分隔:

SELECT * FROM names WHERE name LIKE 'A%' OR name LIKE 'B%' OR name LIKE 'C%' OR name LIKE 'D%'
或者可以使用正则表达式(
REGEXP
):

编辑

下面是另一种使用
UCASE
SUBSTR
中的
的方法:

SELECT * FROM names WHERE UCASE(SUBSTR(name, 1, 1)) IN ('A', 'B', 'C', 'D')

%
是一个通配符,用于表示任何字符,因此可能不是您想要的

更好的方法是使用mysql
REGEXP
,这样您的查询变成:

SELECT x, y, z FROM people WHERE first_name REGEXP '^[A-z]';`
您可以在此处找到更多信息:


这个
%
是一个通配符,用于表示任何字符,因此可能不是您想要的

更好的方法是使用mysql
REGEXP
,这样您的查询变成:

SELECT x, y, z FROM people WHERE first_name REGEXP '^[A-z]';`
您可以在此处找到更多信息:


我能很快找到的一个简单方法是:


表格
中选择字段a,其中字段a类似于“a%”或字段a类似于“b%”或字段a类似于“c%”或字段a类似于“d%”

我可以快速找出的一个简单方法是:


从表
中选择字段a,其中字段a类似于“a%”或字段a类似于“b%”或字段a类似于“c%”或字段a类似于“d%”
我认为最简洁的方法是:

select t.*
from t
where left(name, 1) in ('A', 'B', 'C', 'D')
或者更简短地说:

select t.*
from t
where left(name, 1) between 'A' and 'D';
请注意,尽管这些是大写,但比较可能不区分大小写(MySQL上的默认值),因此“a”、“b”、“c”和“d”将匹配这些

或者,你可以用一些深奥的语言把它缩短:

select t.*
from t
where name >= 'A' and name < 'E';
选择t*
从t
其中名称>='A'和名称<'E';

我认为最简洁的方式是:

select t.*
from t
where left(name, 1) in ('A', 'B', 'C', 'D')
或者更简短地说:

select t.*
from t
where left(name, 1) between 'A' and 'D';
请注意,尽管这些是大写,但比较可能不区分大小写(MySQL上的默认值),因此“a”、“b”、“c”和“d”将匹配这些

或者,你可以用一些深奥的语言把它缩短:

select t.*
from t
where name >= 'A' and name < 'E';
选择t*
从t
其中名称>='A'和名称<'E';
应该有用

应该有用