Mysql语句,用于选择以特定字符范围开头的名称

时间:2012-07-30 11:15:12

标签: mysql regex

我正在编写以下语句来选择以一系列字符开头的名称。

select name from db.table where name like '[c-e]%';

该声明不会向我返回任何内容。但是当我把它改为:

select name from db.table where name like 'c%';

它返回记录。

有什么问题?

4 个答案:

答案 0 :(得分:3)

而不是LIKE使用REGEXP

select name from db.table where name REGEXP '[c-e].+';

请参阅MySQL Pattern Matching

答案 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字段中的索引来避免完整扫描。