插入带有撇号的值的正确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 (q'[Joe]', q'[O'Brien]')
这是一个更好的方法,因为:
假设您有一个包含1000个名称的Excel列表,您希望将其上传到数据库。您可以简单地创建一个公式,用单元格内容生成1000条INSERT语句,而不是手动查找撇号。 它也适用于其他转义字符。例如加载一个Regex模式值,即^(*)(P|N)?(*)|(*)((<|>)\d\d?)?( *)|( )(((? 我)(在|不是)(? -我 ) ?(('[^']+')(, ?'[^']+'))))?(*)$到表中。
其他回答
你需要省略撇号。在T-SQL中,这是一个双撇号,所以你的插入语句变成:
Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
在值周围使用双引号。
insert into Person (First, Last) Values("Joe","O'Brien")
如果它是静态文本,你可以使用两个单引号而不是一个,如下所示:
DEC @text = 'Khabir''s Account'
在Khabir后面有两个单引号(")
如果你的文本不是静态的,它被传递在存储过程参数,那么
REPLACE(@text, '''', '')
单引号通过双引号转义,
下面的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 (q'[Joe]', q'[O'Brien]')
这是一个更好的方法,因为:
假设您有一个包含1000个名称的Excel列表,您希望将其上传到数据库。您可以简单地创建一个公式,用单元格内容生成1000条INSERT语句,而不是手动查找撇号。 它也适用于其他转义字符。例如加载一个Regex模式值,即^(*)(P|N)?(*)|(*)((<|>)\d\d?)?( *)|( )(((? 我)(在|不是)(? -我 ) ?(('[^']+')(, ?'[^']+'))))?(*)$到表中。