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

How to get a match of results from MySQL database that are between characters?

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

匹配: 艾伯特 唐纳德 弗兰克

不匹配: 莎拉 热巴 托马斯

我可以用的数字

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

或者使用between语句。我如何使用数据库中每个单词的第一个字母来使用字母来做到这一点?

你应该可以在这里使用范围。要覆盖 af,不管大小写如何,我们可以尝试:

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';

您可以为此使用正则表达式。在此处阅读更多内容: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] 范围字母开头的寄存器。