插入带有撇号的值的正确SQL语法是什么?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
我一直得到一个错误,因为我认为O后面的撇号是值的结束标记。
插入带有撇号的值的正确SQL语法是什么?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
我一直得到一个错误,因为我认为O后面的撇号是值的结束标记。
当前回答
在值周围使用双引号。
insert into Person (First, Last) Values("Joe","O'Brien")
其他回答
在值周围使用双引号。
insert into Person (First, Last) Values("Joe","O'Brien")
可以通过使用撇号的ASCII表查找值39调用CHAR函数来插入撇号字符。然后可以使用连接操作符将字符串值连接在一起。
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
Eduffy有个好主意。他只是在代码示例中搞反了。在JavaScript或SQLite中,都可以用重音符号替换撇号。
他(我确信是偶然地)将重音符号作为字符串的分隔符,而不是替换O'Brian中的撇号。事实上,对于大多数情况,这是一个非常简单的解决方案。
你只需要把单引号加倍…
insert into Person (First, Last)
values ('Joe', 'O''Brien')
在SQL中转义撇号(即双引号字符):
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
同样适用于SELECT查询:
SELECT First, Last FROM Person WHERE Last = 'O''Brien'
撇号或单引号是SQL中的一个特殊字符,用于指定字符串数据的开始和结束。这意味着要使用它作为你的字面值字符串数据的一部分,你需要转义特殊字符。与一个单一的报价,这通常是通过加倍你的报价。(两个单引号字符,不是双引号而不是单引号。)
注意:只有在通过原始SQL接口手动编辑数据时才应该担心这个问题,因为在开发和测试之外编写查询应该是很少发生的。在代码中,有一些技术和框架(取决于你的堆栈)负责转义特殊字符、SQL注入等。