何时在 SQL 语句中使用单引号?
Posted
技术标签:
【中文标题】何时在 SQL 语句中使用单引号?【英文标题】:When to use single quotes in an SQL statement? 【发布时间】: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 只会从一开始就给你一个不匹配的类型错误。
【参考方案1】:
单引号 ('
) 表示文本数据,如您所指出的(例如,您的示例中的 'Mike'
)。数字数据(例如,您的示例中的 3
)、对象(表、列等)名称和语法元素(例如,update
、set
、where
)不应包含在引号中。
【讨论】:
【参考方案2】:单引号是字符串的分隔符。它让解析器知道字符串从哪里开始和在哪里结束,以及它是一个字符串。您会发现有时您也可以避免使用双引号。
确保您不会错过任何情况的唯一方法是转义输入,否则当单引号以某种方式出现在文本中时,这将很容易被滥用。
【讨论】:
以上是关于何时在 SQL 语句中使用单引号?的主要内容,如果未能解决你的问题,请参考以下文章