我正在编写以下语句来选择以一系列字符开头的名称。
select name from db.table where name like '[c-e]%';
该声明不会向我返回任何内容。但是当我把它改为:
select name from db.table where name like 'c%';
它返回记录。
有什么问题?
答案 0 :(得分:3)
答案 1 :(得分:2)
@juergen d是正确的,但需要进行一些更改,因为您要检查从范围[c-d]开始的所有名称,所以
select name from db.table where name REGEXP '^[c-e].+';
“^”表示启动时匹配必须匹配范围[c-e]
答案 2 :(得分:0)
您应该使用REGEXP
作为:
SELECT name FROM db.table where name REGEXP '[c-e].+';
答案 3 :(得分:0)
正如其他人所说,你可以使用REGEXP
;但是当你想要范围的起始字符时,你也可以这样做:
SELECT name FROM db.table WHERE name >= 'c' AND name < 'f';
这可能会更快,因为它可以利用name
字段中的索引来避免完整扫描。