如何从MySQL数据库获得字符之间的结果匹配?

时间:2018-10-12 04:37:33

标签: mysql between

如何使用MySQL查询所有以某个字母开头的记录,范围从一个字母到另一个字母?例如,我要查找所有在a-f之间具有首字母的条目。

比赛: 阿尔伯特 唐纳德 弗兰克

不匹配: 莎拉 里巴 托马斯

我可以使用数字

SELECT * FROM table WHERE id >= int AND id <= int

或使用between语句。如何使用数据库中每个单词的首字母使用字母?

2 个答案:

答案 0 :(得分:1)

您应该可以在此处使用范围。为了覆盖a并包括f,无论大小如何,我们都可以尝试:

SELECT *
FROM yourTable
WHERE (name >= 'a' AND name < 'g') OR (name >= 'A' AND name < 'G');

Demo

请注意,这种方法使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]范围字母开头的寄存器。