何时在 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)、对象(表、列等)名称和语法元素(例如,updatesetwhere)不应包含在引号中。

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于何时在 SQL 语句中使用单引号?的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中有单引号怎么办

sql语句引号用法 数据库中引号的用法

sql语句插入的数据中含有单引号怎么办?

SQL语句中“与‘

sql语句中,如何表示单引号

sql查询语句,where条件中包含单引号的解决方案