如何插入包含撇号(单引号)的值?
什么是正确的SQL语法插入一个撇号的值在它?
Insert into Person (First, Last) Values 'Joe', 'O'Brien' 我不断收到一个错误,因为我认为O之后的撇号是值的结束标记。
在SQL中退出撇号(即双引号字符):
 INSERT INTO Person (First, Last) VALUES ('Joe', 'O''Brien') /\ right here 
SELECT查询也是如此:
 SELECT First, Last FROM Person WHERE Last = 'O''Brien' 
 撇号或单引号是SQL中的一个特殊字符,用于指定string数据的开始和结束。 这意味着要将它用作字面string数据的一部分,您需要escape特殊字符。 用单引号这通常是通过加倍你的报价来完成的。  (两个单引号字符,不是双引号而不是单引号)。 
注意 :当您通过原始SQL接口手动编辑数据时,您只应该担心这个问题,因为在开发和testing之外编写查询应该很less发生。 在代码中有技术和框架(取决于你的堆栈),负责转义特殊字符, SQL注入等。
你只需要在单引号中加倍
 insert into Person (First, Last) values ('Joe', 'O''Brien') 
 你需要逃避撇号。 在T-SQL中,这是一个双撇号,所以你的insert语句变成: 
 Insert into Person (First, Last) Values 'Joe', 'O''Brien' 
由于单引号用于指示string的开始和结束, 你需要逃避它。
 简短的答案是使用两个单引号 – '' – 为了让SQL数据库将值存储为' 。 
看看使用REPLACE来清理传入的值:
- Oracle REPLACE
- SQL Server REPLACE
- MySQL REPLACE
- PostgreSQLreplace
 你想检查'''' ,如果它们存在于''''''的string中以replace它们,以便逃离唯一的单引号。 
eduffy有一个好主意 。 他只是在代码示例中倒过来了。 无论是在JavaScript或SQLite中,您都可以用重音符号replace撇号。
他(不小心我确定)把重音符号作为string的分隔符,而不是replaceO'Brian中的撇号。 实际上这对大多数情况来说是一个非常简单的解决scheme。
使用撇号的ASCII表查找值39来调用CHAR函数可以插入撇号字符。然后可以将string值与连接运算符连接在一起。
 Insert into Person (First, Last) Values 'Joe', concat('O',char(39),'Brien') 
在值的周围使用双引号。
 insert into Person (First, Last) Values("Joe","O'Brien") 
使用倒退(在〜键上);
 `O'Brien`