0

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

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

该声明没有给我任何回报。但是当我将其更改为:

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

它返回记录。

问题是什么 ?

4

4 回答 4

3

而不是LIKE使用REGEXP

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

请参阅MySQL 模式匹配

于 2012-07-30T11:19:00.093 回答
2

@juergen d 是对的,但是需要进行一些更改,因为您想检查从范围 [cd] 开始的所有名称,所以

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

“^”表示开始时匹配必须匹配范围[ce]

于 2012-07-30T11:35:20.540 回答
0

您应该REGEXP用作:

SELECT name FROM db.table where name REGEXP '[c-e].+';
于 2012-07-30T11:18:52.773 回答
0

正如其他人所说,您可以使用REGEXP; 但是当你想要一系列起始字符时,你也可以这样做:

SELECT name FROM db.table WHERE name >= 'c' AND name < 'f';

这可能会更快,因为它可以利用name字段中的索引来避免完全扫描。

于 2012-07-30T11:30:48.917 回答