如何使用MySQL查询所有以某个字母开头的记录,范围从一个字母到另一个字母?例如,我要查找所有在a-f之间具有首字母的条目。
比赛: 阿尔伯特 唐纳德 弗兰克
不匹配: 莎拉 里巴 托马斯
我可以使用数字
SELECT * FROM table WHERE id >= int AND id <= int
或使用between语句。如何使用数据库中每个单词的首字母使用字母?
答案 0 :(得分:1)
您应该可以在此处使用范围。为了覆盖a
并包括f
,无论大小如何,我们都可以尝试:
SELECT *
FROM yourTable
WHERE (name >= 'a' AND name < 'g') OR (name >= 'A' AND name < 'G');
请注意,这种方法使MySQL能够使用name
列上可能存在的索引的可能性。
正如下面的@John所评论的,如果您不使用区分大小写的排序规则,那么我们可以将上面的查询简化为:
SELECT *
FROM yourTable
WHERE name >= 'a' AND name < 'g';
答案 1 :(得分:1)
您可以为此使用正则表达式。在此处了解更多信息:REGEX_LIKE()。您需要的查询将如下所示:
MySQL 8.0
SELECT
*
FROM
<table_name>
WHERE
REGEXP_LIKE(<column_name>, '^[a-f]');
MySQL <8.0
SELECT
*
FROM
<table_name>
WHERE
<column_name> REGEXP '^[a-f]';
这将匹配所有以[a至f]范围字母开头的寄存器。