gpt4 book ai didi

mysql - 文本与数值的 SQL BETWEEN

转载 作者:IT老高 更新时间:2023-10-29 00:14:42 39 4
gpt4 key购买 nike

BETWEENWHERE 子句中用于选择两个值之间的数据范围。
如果我是正确的,范围的端点是否被排除是特定于 DBMS 的。
以下是我不明白的地方:
如果我有一个值表并执行以下查询:

SELECT food_name 
FROM health_foods
WHERE calories BETWEEN 33 AND 135;`

查询返回结果行包括 calories =33 和calories =135(即范围端点被包括)。

但如果我这样做:

SELECT food_name 
FROM health_foods
WHERE food_name BETWEEN 'G' AND 'O';

获取food_nameO 开头的行。 IE。范围的末尾被排除
为了使查询按预期工作,我键入:

SELECT food_name 
FROM health_foods
WHERE food_name BETWEEN 'G' AND 'P';`

我的问题是,为什么数字和文本数据的 BETWEEN 会有这么大的差异?

最佳答案

Between 对数字和字符串的操作方式完全相同。两个端点都包含在中。这是 ANSI 标准的一部分,因此它是所有 SQL 方言的工作方式。

表达式:

where num between 33 and 135

num 为 135 时匹配,number 为 135.00001 时不匹配。

同理,表达式:

where food_name BETWEEN 'G' AND 'O'

将匹配 'O',但不匹配任何其他以 'O' 开头的字符串。

曾经简单的拼凑就是使用“~”。这具有最大的 7 位 ASCII 值,因此对于英语应用程序,它通常工作得很好:

where food_name between 'G' and 'O~'

您还可以做各种其他事情。这里有两个想法:

where left(food_name, 1) between 'G' and 'O'
where food_name >= 'G' and food_name < 'P'

不过,重要的一点是 between 的工作方式与数据类型无关。

关于mysql - 文本与数值的 SQL BETWEEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15720950/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com