如何插入包含撇号(单引号)的值?如何插入包含撇号(单引号)的值?(How to insert a v

2019-05-08 20:22发布

什么是正确的SQL语法插入与它撇号的值?

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

我不断收到一个错误,因为我认为将O后的撇号是该值的结束标记。

Answer 1:

逃离你的SQL撇号(即翻倍的单引号字符):

INSERT INTO Person
    (First, Last)
VALUES
    ('Joe', 'O''Brien')
              /\
          right here  

这同样适用于SELECT查询:

SELECT First, Last FROM Person WHERE Last = 'O''Brien'

撇号或单引号,是在SQL特殊字符指定字符串数据的开始和结束。 这意味着,用它作为你的文字字符串数据的一部分,你需要escape的特殊字符。 用单引号这通常是由您的报价翻倍来实现。 (两个单引号字符,而不是双引号,而不是一个单引号。)

注意 :您应该永远只担心这个问题,因为开发和测试之外编写查询应该是一个罕见的现象,当你手动编辑通过原始SQL接口数据。 在代码中有一些技术和框架(取决于您的堆栈),其采取的转义特殊字符,照顾SQL注入等。



Answer 2:

你只需要对单引号加倍...

insert into Person (First, Last)
values ('Joe', 'O''Brien')


Answer 3:

你需要躲避撇号。 在T-SQL这是一部带有双撇号,所以你insert语句将变成:

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


Answer 4:

因为一个单引号用于指示串的开始和结束; 你需要逃避它。

简短的回答是使用两个单引号- '' -为了一个SQL数据库来存储值'

看看使用更换消毒传入值:

  • 甲骨文REPLACE
  • SQL服务器更换
  • MySQL的REPLACE
  • PostgreSQL的更换

你要检查'''' ,并替换他们,如果他们在字符串中存在与''''''为了逃避孤独的单引号。



Answer 5:

eduffy有一个好主意 。 他只是在自己的代码示例得到它倒退。 无论是在JavaScript或SQLite中,你可以替换重音符号的撇号。

他(无意中我相信)放置重音符号作为分隔符的字符串,而不是在奥布赖恩替换撇号。 这其实是大多数情况下,简单得不得了的解决方案。



Answer 6:

撇号字符可以通过调用被插入CHAR用撇号的功能ASCII查表值,39.字符串值然后可以连同串联连接操作符 。

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


Answer 7:

周围使用值双引号。

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


Answer 8:

单引号用起来加倍逃脱

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


Answer 9:

使用反引号(在〜键)代替;

`O'Brien`


文章来源: How to insert a value that contains an apostrophe (single quote)?