在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的转义字符单引号的更多相关文章

  1. 浅谈SQL中的单引号

    单引号:对很对计算机语言包括(SQL)是做字符串引用的:这个是大家通常知道的作用:但是对SQL语言来说:还有另外一个作用是作引号的转义 总结下:对oracle(sql)的作用. 做字符串引用:例如'a ...

  2. SQL中插入单引号,新增修改删除

    1.插入单引号如果不转化的话,字符串插入到数据库中错误的,只要在字符串中有单引号的地方在加一个单引号即可.    例如:在数据库插入'井下设备' :    insert into Static_Bel ...

  3. jackson json转实体 允许特殊字符和转义字符 单引号

    //允许出现特殊字符和转义符 mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ; //允许出现单引号 mapper.confi ...

  4. Sql Server添加单引号

    " ' "(单引号)的运用:在sql server中,两个" ' "(单引号)在拼接字符串的情况下运用,就是表示拼接上了一个" ' "单引号 ...

  5. sql字符串包含单引号

    ad'min select  * from user where name ='ad''min'

  6. SQL内模糊查询语句拼接时单引号'问题

    下面以存储过程查询所有为例,非存储过程(或不是查询所有将*替换为你想要查询的列即可)更为简单, 语法:select * from 表名 where 列名like'%条件%' 拼接后的set @变量名 ...

  7. sql注入-推断是否存在SQL注入-单引号

    来自:https://www.cnblogs.com/ichunqiu/p/5749347.html 首先我们需要了解数据是通过什么方式进行输入,这里我总结了三个: GET请求:该请求在URL中发送参 ...

  8. Java的sql语句 写关键字不需要添加单引号

    Java的sql语句 写关键字不需要添加单引号

  9. js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量)

    js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量) 一.总结 1.html中属性规范是 ...

随机推荐

  1. 安装和使用JD-Eclipse插件

    http://www.cnblogs.com/0616--ataozhijia/p/3924411.html http://aniyo.iteye.com/blog/1336622

  2. 将IP转换为16进制,用于IPv4-IPv6

    # --*-- coding: utf-8 --*--# create by xiaocaiji while 1: str_ip = input("input a IP:") li ...

  3. MySQL学习入门安装和启动及常见问题解决方法(一)

    1.下载MySQL 官网地址:https://www.mysql.com/downloads/ 2.个人学习使用,只有下面这个是免费的 3.下载之后解压到目录中,并加入环境变量,如下 创建MYSQL_ ...

  4. 【MySQL】初识数据库及简单操作

    一.数据库概述 1.1 什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机. ...

  5. Mysql常用命令 详细整理版

    Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop database na ...

  6. zookeeper名字服务

    10.12.67.31 #!/bin/shmkdir -p /data/zk-install/cd /data/zk-install/wget -q -O ons_agent-1.0.5.tar.gz ...

  7. 创建Gitblit本地服务器(For windows )01

    1.先下载gitblit  貌似需要FQ,百度云链接https://pan.baidu.com/s/1WUtBswj5TkFFcd_hiFFCcw,提取码: xr9n .因为gitblit是基于jav ...

  8. Leetcode——Two Sum(easy)

    题目:Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1] 代码: ...

  9. 团队-爬虫豆瓣top250项目-模块测试过程

    模块测试: 项目托管平台地址:https://github.com/gengwenhao/GetTop250.git 模块测试:"获取250排名的全部电影信息"功能,测试方法:手动 ...

  10. 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB

    走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...