表students我尝试按字母名称对范围A-M中的字母进行排序:x1c 0d1x的数据
students
的我试过了
SELECT * FROM student WHERE student_first_name like '[A-M]%';
字符串它什么都没给我。
s71maibg1#
您正在使用SQLite,它支持GLOB运算符,您可以使用[x-y]列表通配符和*而不是%:
GLOB
[x-y]
*
%
SELECT * FROM student WHERE student_first_name GLOB '[A-M]*';
字符串请注意,GLOB区分大小写。如果您想要不区分大小写的结果,请用途:
SELECT * FROM student WHERE UPPER(student_first_name) GLOB '[A-M]*';
型
ubby3x7f2#
SQLight LIKE仅支持%和_。对于你正在尝试做的事情,你可以使用GLOB代替。GLOB运算符类似于LIKE运算符。与LIKE运算符不同,GLOB运算符区分大小写并使用UNIX通配符。
_
ymzxtsji3#
LIKE运算符不支持字符类,只支持通配符。要获取所有以A-M开头的名称,您可以
LIKE
where last_name like 'A%' or last_name like 'B%' or ... or last_name like 'M%'个
where last_name like 'A%' or last_name like 'B%' or ... or last_name like 'M%'
where last_name ~ '^[A-M]'个
where last_name ~ '^[A-M]'
IN
where substr(last_name, 1, 1) in ('A', 'B', ..., 'M')个SQL Fiddle(PostgreSQL)
where substr(last_name, 1, 1) in ('A', 'B', ..., 'M')
qvsjd97n4#
你的版本没有工作,因为你要求它给予你所有的学生,他们的名字以方括号开头,它正确地告诉你没有。除了其他答案,您还可以使用Where first_name between 'A' And 'N' And first_name<'N'。这个版本通过使用first_name列上可能存在的任何索引来获得更快的速度,因为您没有对它执行计算。
Where first_name between 'A' And 'N' And first_name<'N'
a11xaf1n5#
不确定在SQL,但我已经测试了下面的查询在MySQL它的工作对我来说很好.请像下面这样使用REGEXP:
REGEXP
SELECT * FROM student WHERE student_first_name REGEXP '^[A-M]';
字符串
5条答案
按热度按时间s71maibg1#
您正在使用SQLite,它支持
GLOB
运算符,您可以使用[x-y]
列表通配符和*
而不是%
:字符串
请注意,
GLOB
区分大小写。如果您想要不区分大小写的结果,请用途:
型
ubby3x7f2#
SQLight LIKE仅支持
%
和_
。对于你正在尝试做的事情,你可以使用GLOB代替。GLOB运算符类似于LIKE运算符。与LIKE运算符不同,GLOB运算符区分大小写并使用UNIX通配符。
ymzxtsji3#
LIKE
运算符不支持字符类,只支持通配符。要获取所有以A-M开头的名称,您可以
where last_name like 'A%' or last_name like 'B%' or ... or last_name like 'M%'
个where last_name ~ '^[A-M]'
个IN
列表进行比较where substr(last_name, 1, 1) in ('A', 'B', ..., 'M')
个SQL Fiddle(PostgreSQL)
qvsjd97n4#
你的版本没有工作,因为你要求它给予你所有的学生,他们的名字以方括号开头,它正确地告诉你没有。
除了其他答案,您还可以使用
Where first_name between 'A' And 'N' And first_name<'N'
。这个版本通过使用first_name列上可能存在的任何索引来获得更快的速度,因为您没有对它执行计算。
a11xaf1n5#
不确定在SQL,但我已经测试了下面的查询在MySQL它的工作对我来说很好.
请像下面这样使用
REGEXP
:字符串