【问题标题】:When to use single quotes in an SQL statement?何时在 SQL 语句中使用单引号?
【发布时间】:2015-12-31 19:45:59
【问题描述】:

我知道在处理 TEXT 类型的数据时应该使用它(我猜是回退到 TEXT 的数据),但这是唯一的情况吗?

例子:

UPDATE names SET name='Mike' WHERE id=3

我正在用 C++ 编写 SQL 查询自动生成,所以我想确保在必须添加引号时不会遗漏案例。

【问题讨论】:

  • 您需要将字符串用引号括起来。数字/小数等不应放在引号中,但通常您可以将它们放在引号中,它们将被隐式转换 - 这取决于您使用的 SQL 版本。
  • @Charleh 是否意味着“id='3'”将转换为“id=3”。是这个意思吗?
  • @rightaway717:是的,在许多 SQL DBMS 中,如果列 id 的类型是 INTEGER 但您将 '3' 作为要比较的值传递,则可以接受并在语句准备或执行中的某个点。其他 DBMS 只会从一开始就给你一个不匹配的类型错误。

标签: sql sqlite quotes


【解决方案1】:

单引号 (') 表示文本数据,如您所指出的(例如,您的示例中的 'Mike')。数字数据(例如,您的示例中的 3)、对象(表、列等)名称和语法元素(例如,updatesetwhere)不应包含在引号中。

【讨论】:

    【解决方案2】:

    单引号是字符串的分隔符。它让解析器知道字符串从哪里开始和在哪里结束,以及它是一个字符串。您会发现有时您也可以避免使用双引号。

    确保您不会错过任何情况的唯一方法是转义输入,否则当单引号以某种方式出现在文本中时,这将很容易被滥用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2013-03-21
      • 1970-01-01
      • 2020-01-14
      相关资源
      最近更新 更多