插入带有撇号的值的正确SQL语法是什么?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
我一直得到一个错误,因为我认为O后面的撇号是值的结束标记。
插入带有撇号的值的正确SQL语法是什么?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
我一直得到一个错误,因为我认为O后面的撇号是值的结束标记。
当前回答
Eduffy有个好主意。他只是在代码示例中搞反了。在JavaScript或SQLite中,都可以用重音符号替换撇号。
他(我确信是偶然地)将重音符号作为字符串的分隔符,而不是替换O'Brian中的撇号。事实上,对于大多数情况,这是一个非常简单的解决方案。
其他回答
你只需要把单引号加倍…
insert into Person (First, Last)
values ('Joe', 'O''Brien')
你需要省略撇号。在T-SQL中,这是一个双撇号,所以你的插入语句变成:
Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
单引号通过双引号转义,
下面的SQL说明了这个功能。
declare @person TABLE (
[First] nvarchar(200),
[Last] nvarchar(200)
)
insert into @person
(First, Last)
values
('Joe', 'O''Brien')
select * from @person
结果
First | Last
===================
Joe | O'Brien
提供的解决方案是不工作的好,因为它广告字符串与两个单引号在数据库中,最简单的方法是使用反反斜杠之前撇号(单引号)。
Insert into Person (First, Last) Values 'Joe', 'O\'Brien'
因为单引号用于表示字符串的开始和结束;你需要逃离它。
简单的回答是使用两个单引号- " -以便SQL数据库将值存储为'。
看一下使用REPLACE来清除传入值:
甲骨文取代 SQL Server REPLACE MySQL取代 PostgreSQL取代
您希望检查'''',如果它们存在于字符串中,则将它们替换为'''''',以便转义单个单引号。