sql的转义字符单引号
在SQL中,我们都知道单引号 ' 表示字符串的开始和结束符号,如:
select * from students where name = '小明';
但如果字符串里面有单引号时,应该怎么查询呢?
这是我最近遇到的一个问题,需求是对一张表的数据进行更新,但各个环境的数据并不一致,只能通过拼接的方式生成适合对应环境的变更脚本。更新语句格式如下:
update students set grade = '一年级' where grade_id = '' and grade is null;
update students set grade = '二年级' where grade_id = '' and grade is null;
...
--只是举例,实际就是各个环境字段值不一致,需要先根据环境拼接变更脚本
拼接sql语句的脚本初始如下:
--db2数据库使用下面的语句
select 'update students set grade = ' || grade || ' where grade_id = ' || grade_id || ' and grade is null;' from classes
where grade_id in (select grade_id from students where grade_id is not null and grade is null); --mysql数据库使用下面的语句
select concat('update students set grade = ',grade,' where grade_id = ',grade_id,' and grade is null;') from classes
where grade_id in (select grade_id from students where grade_id is not null and grade is null);
结果如下:

可以发现,字符串值没有单引号,直接运行会报错。google后找到解决办法。sql单引号
sql的转义字符单引号 ' ,可以对字符串中的单引号进行转义,使其表示字符串值 ' ,这样如果要查询 name 为 小'明 的值,其sql语句如下:
select * from students where name = '小''明';
所以上面的拼接脚本修改如下,即可生成正确的update语句。
--db2数据库使用下面的语句
select 'update students set grade = ''' || grade || ''' where grade_id = ''' || grade_id || ''' and grade is null;' from classes
where grade_id in (select grade_id from students where grade_id is not null and grade is null); --mysql数据库使用下面的语句
select concat('update students set grade = ''',grade,''' where grade_id = ''',grade_id,''' and grade is null;') from classes
where grade_id in (select grade_id from students where grade_id is not null and grade is null); --注意三个逗号需连续,且与其他字符间的空格
sql的转义字符单引号的更多相关文章
- 浅谈SQL中的单引号
单引号:对很对计算机语言包括(SQL)是做字符串引用的:这个是大家通常知道的作用:但是对SQL语言来说:还有另外一个作用是作引号的转义 总结下:对oracle(sql)的作用. 做字符串引用:例如'a ...
- SQL中插入单引号,新增修改删除
1.插入单引号如果不转化的话,字符串插入到数据库中错误的,只要在字符串中有单引号的地方在加一个单引号即可. 例如:在数据库插入'井下设备' : insert into Static_Bel ...
- jackson json转实体 允许特殊字符和转义字符 单引号
//允许出现特殊字符和转义符 mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ; //允许出现单引号 mapper.confi ...
- Sql Server添加单引号
" ' "(单引号)的运用:在sql server中,两个" ' "(单引号)在拼接字符串的情况下运用,就是表示拼接上了一个" ' "单引号 ...
- sql字符串包含单引号
ad'min select * from user where name ='ad''min'
- SQL内模糊查询语句拼接时单引号'问题
下面以存储过程查询所有为例,非存储过程(或不是查询所有将*替换为你想要查询的列即可)更为简单, 语法:select * from 表名 where 列名like'%条件%' 拼接后的set @变量名 ...
- sql注入-推断是否存在SQL注入-单引号
来自:https://www.cnblogs.com/ichunqiu/p/5749347.html 首先我们需要了解数据是通过什么方式进行输入,这里我总结了三个: GET请求:该请求在URL中发送参 ...
- Java的sql语句 写关键字不需要添加单引号
Java的sql语句 写关键字不需要添加单引号
- js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量)
js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量) 一.总结 1.html中属性规范是 ...
随机推荐
- 如何打开用eclipse没有.project文件的Java工程
大概分为以下7个步骤,具体如下: 1.在你的eclipse下新建一个与你想要打开的源代码项目同名的一个项目(我这举例叫myweb). 2.在电脑磁盘中找到刚刚新建的项目,把它生成的.project文件 ...
- 我的第一个flink_java程序
之前看了视频学习第一个flink word count使用,但是对于socket发送数据作为数据源我这里有点忘记了,加上最近有个项目要发布,一直在忙,所以迟迟无法完成: 1.首先我们要有数据源,因为 ...
- 6行代码实现纯js导出excel
// excel导出当前列表 function memberExport() { var oHtml = $('#list').html(); var excelHtml = '<html> ...
- Java中子类对象初始化的过程
Java中的继承机制看似简单,实际上包含了很多细节.最近在刷题过程中屡屡跳坑,于是自己仔细再学习了一下Java中子类初始化的细节,与大家分享. class Father { Father(){}; } ...
- Spring Boot jsp页面无法跳转问题
可能的情况如下: 1.未在pom.xml中添加依赖 <!-- jsp 视图支持--> <dependency> <groupId>org.apache.tom ...
- 7.地图随机装饰,与转化过程补充,与ai的设计思路
这两天本来只想实现地图的随机装饰,然后发现以前的bin格式设计存在不足,所以最后不得不去改地图,并去重制整个地图的阶段,此篇总结这个过程 先描述下bin结构 首先地图由无数六边形组合,一个六边形由两层 ...
- 走进JDK(十一)------LinkedHashMap
概述LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题.除此之外,LinkedHas ...
- beego笔记
beego学习笔记一:创建第一个beego Web项目 Go语言beego框架快速搭建体验五分钟讲解01 beego框架图文简介五分钟讲解02 beego框架图文简介五分钟讲解03-go语言简单方式操 ...
- python提示AttributeError: 'NoneType' object has no attribute 'append'【转发】
在写python脚本时遇到AttributeError: 'NoneType' object has no attribute 'append' a=[] b=[1,2,3,4] a = a.appe ...
- UE4行为树
这是 UE4中行为树编辑器 中可用的默认节点.取决于开发项目的不同(如射击游戏),可能会有更多节点.这里介绍五种行为树节点类型: 节点类型 描述 Composite(流程控制节点) 这种节点定义一 ...