当前位置: 首页 > 面试题库 >

文字与数字值之间的SQL BETWEEN

巩镜
2023-03-14
问题内容

BETWEEN用于WHERE子句中以选择两个值之间的数据范围。
如果我是正确的,则是否排除了范围的端点是特定于DBMS的。
我在以下内容中无法理解的内容:
如果我有一个值表并且执行以下查询:

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

该查询作为结果行返回, 包括 卡路里= 33和卡路里= 135(即, 包括 范围端点)。

但是,如果我这样做:

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

没有food_name开头的行O。也就是说,范围的末尾被 排除在外
为了使查询按预期方式工作,我输入:

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无论数据类型如何,其工作方式都相同。



 类似资料:
  • 我正在尝试解决此问题: 一位物理教授给班上的学生做项目。学生们必须组成一个两人小组来做这个项目。教授让学生来决定队伍。一个班级的学生人数将是偶数。 每个学生都有自己的知识水平。它告诉每个学生有多少知识。一个团队的知识水平是两个学生知识水平的总和。 学生们决定组成小组,这样知识最高的团队和知识最低的团队之间的差异就最小了。 投入 输入的第一行将包含测试用例的数量t;在接下来的t行中,第一个数字是n,

  • 如何创建一个列表,其中的值介于我输入的两个值之间?例如,为11到16之间的值生成以下列表:

  • 我是Java新手,为了练习,我在互联网上找到了一项任务: "在你输入的两个数字之间找到所有完美的数字。" 顺便说一下——一个完美的数字是一个自然数,等于它所有除数的和。所以我开始工作,遇到了这样一个问题,当我输入两个数字时。 例如:,我在控制台中得到正确答案:。但是,如果第一个数字是,例如,,第二个是,我会将此输出输出到控制台:,而我应该只得到。也就是说,出于某种原因,最小值不会缩短对完美数的搜索

  • 问题内容: 我想知道如何在具有随机数的数组中的设置值之间打印所有数字。它还应说明有多少用户随机数高于设置值。这是一个外观的示例: 到目前为止,这是我的代码,我设法使其打印出最大的数字。 问题答案: 妳去 我所做的是添加类,而不是生成随机数。 使用可以在需要时分配更多内存的情况下分配更大的内存,以存储小于或大于499的值。 没有新的数组实现摘要: 这是对数组进行迭代并执行以下操作: 计算有500以上

  • 我只是在玩一些代码,我似乎不明白我哪里出错了。 我有一个“数字”字段,存储01-20之间的数字,后跟一个字母。我已经创建了一个局部变量,将前2个数字存储为字符串,但如果范围在01-20之间,我似乎无法使范围返回真。注意00不是有效的数字。 有什么想法吗?

  • 问题内容: 如何创建一个包含两个输入值之间的值的列表?例如,将为11到16的值生成以下列表。 问题答案: 使用。在Python 2.x中,它返回一个列表,因此您需要做的是: 在Python 3.x中是迭代器。因此,您需要将其转换为列表: 注意 :第二个数字是唯一的。因此,这里需要为= 编辑: 要回答有关增加by的问题,最简单的选择可能是使用numpy 和: