sql语句中有单引号怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语句中有单引号怎么办相关的知识,希望对你有一定的参考价值。

如果插入的数据中包含单引号,就需要处理,用户可以将单引号替换成两个单引号,在sql
中连续两个单引号就表示一个单引号字符,例如:

insert into yourTable(f1,f2) values(100,'ab''c')表示插入

新记录f2字段为ab'c

使用函数replace可以实现这个功能:

replace(yourStr,"'","''")

在.NET里面,就要先检测输入的数据中有没有单引号了,如果有,就要自动设置将一个单引号改为两个单引号。

扩展资料:

sql语句举例:

sql="select * from 数据表 where字段名 in ('值1','值2','值3')"

sql="select * from 数据表 where 字段名 between 值1 and 值2"

sql="update 数据表 set字段名=字段值 where 条件表达式"

sql="delete from 数据表 where 条件表达式"

sql="delete from 数据表" (将数据表所有记录删除)

参考资料来源:百度百科-SQL语句大全

参考技术A 如果是查询条件,应该尽可能使用参数化查询。

实在是要单引号,那就再加一个单引号来转义。

用两个单引号,表示一个单引号。

比如查询Name为abc'cc的

SELECT * FROM [TABLE] WHERE [Name] = 'abc''cc'本回答被提问者采纳
参考技术B 单引号说明那个字段上的值是字符串 参考技术C 一楼...

mysql 进行update时,要更新的字段中有单引号或者双引号导致不能批量生成sql的问题

前言

将数据从一张表迁移到另外一张表的过程中,通过mysql的concat方法批量生成sql时遇到了一个问题,即进行UPDATE更新操作时如果原表中的字段中包含单引号\'或者双引号",那么就会生成不正确的update语句。

原因当然很简单因为update table set xxx = \'content\'时content一般由英文单引号\'或者双引号"包裹起来,使用单引号较多。

如果content中包含单引号\'时我们需要对单引号\'进行转义或者将content用双引号括起来,这样双引号"里面的单引号\'就会被视为普通的字符,同理如果content中包含双引号"那么我们就可以换成单引号括起来content,这样双引号"就会被视为普通字符。但是如果content中既包含单引号\'又包含双引号",这时我们就不得不对content中的内容进行转义了。 

实践

学生表student中有以下四条数据,现在要把student表中的四条数据按照id更新到用户表user当中,user表的结构同student一样。

 

1、内容中含有单引号

有单引号的可以用双引号括起来

select concat("update user set name = \'",name,"\' where id = ",id,";") from student where id = 1;

2、内容中含有双引号

有双引号的可以用单引号括起来

select concat("update user set name = \\"",name,"\\" where id = ",id,";") from student where id = 3;

3、内容中包含双引号和单引号

需使用replace函数将content中的单引号和双引号替换为转义的形式。

函数介绍:replace(object,search,replace),把object对象中出现的的search全部替换成replace。

select concat("update user set name = \'",replace(replace(name,"\'","\\\\\\\'"),"\\"","\\\\\\""),"\' where id = ",id,";") from student where id = 2;  

 对student整表应用以下sql

select concat("update user set name = \'",replace(replace(name,"\'","\\\\\\\'"),"\\"","\\\\\\""),"\' where id = ",id,";") from student;

得到的结果是:

update user set name = \'小明\\"\' where id = 1;
update user set name = \'\\\'翎\\"野\' where id = 2;
update user set name = \'\\\'小王\' where id = 3;
update user set name = \'小李\' where id = 4;

后记

知无不言,言无不尽。如果对您有帮助,请不要忘了给翎野君点赞。

以上是关于sql语句中有单引号怎么办的主要内容,如果未能解决你的问题,请参考以下文章

如何插入包含单引号的字符串

SQL语句动态传入参数

sql要查找的数据中有双引号咋办?

sql语句插入的数据中含有单引号怎么办?

sql中双引号用在哪些范围?

sql语句中双引号添加的问题