【问题标题】:How SQL selects between two strings/texts?SQL 如何在两个字符串/文本之间进行选择?
【发布时间】:2020-01-18 14:10:09
【问题描述】:

如果我有以下选择语句,则在 SQL 中:

SELECT * FROM Products WHERE ProductName BETWEEN 'Geitost' AND 'Pavlova'

它运行成功并显示输出记录,但我有点困惑我们如何在两个字符串之间进行搜索以及 SQL 如何执行它,

例如下面的 select 语句:

SELECT * FROM Products WHERE Price BETWEEN 100 AND 300

很明显,我们正在尝试查找价格等于或大于 100 美元但小于或等于 300 美元的所有价格

谁能解释一下 SQL 中两个字符串之间的选择机制是什么?

提前致谢。

【问题讨论】:

  • 详细信息是特定于 DBMS 的,但请考虑如何在电话簿中搜索“Geitost”和“Pavlova”之间的名称。
  • “但想想你将如何在电话簿中搜索‘Geitost’和‘Pavlova’之间的名字。”想象一下如何弄清楚它是一个绝妙的主意,非常感谢。这意味着“Geitoss”和“Pavlovb”这两个词将被排除在外,而“Hockey”、“Stars”甚至“Pavlovaa”将被包括在内。
  • 我希望 'Stars' 和 'Pavlovaa' 被排除在外,因为它们都按字母顺序排列在 'Pavlova' 之后,而不是在值之间。
  • 对不起,您的权利将被排除在外。再次感谢。

标签: sql linq select


【解决方案1】:

您的问题相当令人费解。此代码有效:

WHERE Price BETWEEN 100 AND 300

变成:

WHERE Price >= 100 AND Price <= 300

同样,你的第一个条件相当于:

WHERE ProductName >= 'Geitost' AND
      ProductName <= 'Pavlova'

所以问题在于如何比较字符串。简短的回答是“它们如何出现在字典中”。当然,世界上有很多词典。更完整的答案基于 collat​​ions,它描述了字符串的字母顺序。

Here 是用于排序规则和字符集的 MySQL 文档。尽管排序规则的名称和函数的语法等一些细节可能会有所不同,但这个想法在数据库中是相似的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 2021-10-30
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    相关资源
    最近更新 更多