有什么办法可以在 MySQL 查询的 BETWEEN 子句中使用通配符 %% 吗?

Is there any way I can use wildcard %% in BETWEEN Clause of MySQL query?

我在MySQLtable列有一组数据

最初是这样的:

+---------+
+ color   +
+---------+
+ D       +
+ E       +
+ F       +
+ G       +
+ H       +
+ I       +
+ J       +
+---------+

所以我准备了一个查询:

SELECT color FROM app_data WHERE color BETWEEN "D" AND "I"

而且运行很好。

现在,数据已更改,搜索条件已实施。所以我的列值变成了这样:

+---------+
+ color   +
+---------+
+ D       +
+ E       +
+ F       +
+ D-F     +
+ G       +
+ H       +
+ H-J     +
+ D-G     +
+ I       +
+ J       +
+---------+

现在在较新的数据中,我无法获取范围数据,即“D-F”、“H-J”和“D-G”。

有什么方法可以包含它们并使用 BETWEEN 运算符查找结果?

喜欢,SELECT color FROM app_data WHERE color BETWEEN "D*" AND "I*"

WHERE color BETWEEN SUBSTRING_INDEX(pattern, '-', 1)
                AND SUBSTRING_INDEX(pattern, '-', -1)

? 或者你的意思是

-- For a pattern BETWEEN 'D*' AND 'F*'
WHERE color >= 'D' AND color < 'G'

?

万一有人在寻找答案,我在谷歌搜索时找到了问题的解决方案。

我已经使用 REGEXP 获得了正确的数据。

修改我的查询来自:

SELECT color FROM app_data WHERE color BETWEEN "D" AND "I"

收件人:

SELECT color FROM app_data WHERE color REGEXP "D|E|F|G|H|I"

解决了我的问题,我使用这个修改后的查询得到了所有正确的数据。 无论您要查找哪个范围,您只需要通过 REGEXP.

中的那些

例如,如果我只想要 D 颜色的结果,那么我的查询将是这样的:

SELECT color FROM app_data WHERE color REGEXP "D"

如果我想要 D to F 中的颜色,我的查询将是这样的:

SELECT color FROM app_data WHERE color REGEXP "D|E|F"