插入带有撇号的值的正确SQL语法是什么?

Insert into Person
  (First, Last)
Values
  'Joe',
  'O'Brien'

我一直得到一个错误,因为我认为O后面的撇号是值的结束标记。


当前回答

单引号通过双引号转义,

下面的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

其他回答

你需要省略撇号。在T-SQL中,这是一个双撇号,所以你的插入语句变成:

Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'

使用反勾号(在~键上)代替;

`O'Brien`

这就是我的数据作为API响应的样子,我想要存储在MYSQL数据库中。它包含报价,HTML代码等。

例子:-

{

rewardName: "Cabela's eGiftCard $25.00",

shortDescription: '<p>adidas gift cards can be redeemed in over 150 adidas Sport Performance, adidas Originals, or adidas Outlet stores in the US, as well as online at&nbsp;<a href="http://adidas.com/">adidas.com</a>.</p>

terms: '<p>adidas Gift Cards may be redeemed for merchandise on&nbsp;<a href="http://adidas.com/">adidas.com</a>&nbsp;and in adidas Sport Performance, adidas Originals, and adidas Outlet stores in the United States.'

}

解决方案

CREATE TABLE `brand` (
`reward_name` varchar(2048),
`short_description` varchar(2048),
`terms` varchar(2048),  
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;

在插入时,In后跟JSON.stringify()

    let brandDetails= {
    rewardName: JSON.stringify(obj.rewardName),  
    shortDescription: JSON.stringify(obj.shortDescription),
    term: JSON.stringify(obj.term),
     }

上面是JSON对象,下面是将数据插入MySQL的SQL查询。

let query = `INSERT INTO brand (reward_name, short_description, terms) 
VALUES (${brandDetails.rewardName}, 
(${brandDetails.shortDescription}, ${brandDetails.terms})`;

它的工作…

单引号通过双引号转义,

下面的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

如果它是静态文本,你可以使用两个单引号而不是一个,如下所示:

DEC @text = 'Khabir''s Account'

在Khabir后面有两个单引号(")

如果你的文本不是静态的,它被传递在存储过程参数,那么

REPLACE(@text, '''', '')