在SQL中,我们都知道单引号 ' 表示字符串的开始和结束符号,如:

select * from students where name = '小明';

但如果字符串里面有单引号时,应该怎么查询呢?

这是我最近遇到的一个问题,需求是对一张表的数据进行更新,但各个环境的数据并不一致,只能通过拼接的方式生成适合对应环境的变更脚本。更新语句格式如下:

1 update students set grade = '一年级' where grade_id = '01' and grade is null;

2 update students set grade = '二年级' where grade_id = '02' and grade is null;

3 ...

4 --只是举例,实际就是各个环境字段值不一致,需要先根据环境拼接变更脚本

拼接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语句。

1 --db2数据库使用下面的语句

2 select 'update students set grade = ''' || grade || ''' where grade_id = ''' || grade_id || ''' and grade is null;' from classes

3 where grade_id in (select grade_id from students where grade_id is not null and grade is null);

4

5 --mysql数据库使用下面的语句

6 select concat('update students set grade = ''',grade,''' where grade_id = ''',grade_id,''' and grade is null;') from classes

7 where grade_id in (select grade_id from students where grade_id is not null and grade is null);

8

9 --注意三个逗号需连续,且与其他字符间的空格

如: insert into yourTable(f1,f2) values(100,'ab''c') 可以插入   ab'c

mysql单引号转义_sql语句中使用单引号'作为转义字符相关推荐

  1. java 中的单引号报错_shell中的单引号,双引号,反引号

    docker的父镜像中定义了一个环境变量,我们的镜像在启动命令中需要用到这个环境变量.但是不加双引号时总是报错,报找不到java的启动类,加上双引号就不报错了. 父镜像中定义的变量:$xxx_CMD ...

  2. MYSQL ‘单引号转义 \反斜杠转义

    1.单引号 ' 转义 今天写mysql的时候遇到一个问题,当传入的mysql语句的参数中含有单引号就会出现问题,这就需要用到转义,其实非常简单,就是使用 .Replace("'", ...

  3. mysql注入单引号被过滤_证明过滤单引号的ORDER BY可以注入

    题目:证明基于ORDER BY的SQL 注入,且单引号(')被过滤. 已知:代码如下,有注入无悬念. $sortColumn = mysqli_real_escape_string($_GET['so ...

  4. mysql语言注释符号_sql语句中的注释符号

    部署web应用 package it.cast.servlet; import java.io.IOException; import java.io.PrintWriter; import java ...

  5. mysql sql语句 引号_关于sql:何时在MySQL中使用单引号,双引号和反引号

    我正在尝试学习编写查询的最佳方法. 我也理解保持一致的重要性. 到现在为止,我已经随机使用单引号,双引号和反引号而没有任何实际想法. 例: $query = 'INSERT INTO table (i ...

  6. java html 双引号转义,java如何将单引号转义

    java如何将单引号转义 [2021-02-09 22:01:08]  简介: php单引号与双引号的区别:1.单引号和双引号中都可以使用转义字符[\],但只能转义在单引号中引起来的单引号和转义转义符 ...

  7. mysql单引号和双引号

    表名,列名最好用`(esc下面那个,不用`会出错) 这就要从双引号和单引号的作用讲起: 双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出.例如: $ab ...

  8. 双引号内的单引号转义

    多引号内的单引号转义 '-->单引号转义 "-->双引号 thtml+="<input type='text' autocomplete='off' value= ...

  9. java程序单引号报错_JavaScript中的单引号和双引号报错的解决方法

    在使用JavaScript显示消息或者传递字符数据的时候,经常会碰到数据中夹杂单引号(')或者双引号("),这种语句往往会造成JavaScript报错.对此一般采用/'或者/"的解 ...

最新文章

  1. (10)调用门提权(无参数)
  2. 【Linux】一步一步学Linux——cp命令(31)
  3. python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...
  4. 【抽象代数】类方程和有限群
  5. 转行前端很迷茫,该怎么办?
  6. Python 爬虫的集中简单方式
  7. php mysql sql model_PHP数据库模型
  8. Oracle数据库多语言文字存储解决方案
  9. JS表单验证之正则表达式
  10. Vue的内置指令:v-if和v-show的区别
  11. (14.1)Zotero常用功能:插件、导入题录、参考文献
  12. java 背单词系统_基于JAVA模拟背单词系统(含源文件)
  13. 【缓存】缓存更新策略
  14. 首款物联网防火墙himqtt开源
  15. Spyder启动闪退或打开项目编码报错
  16. Numpy数组的索引与切片:取数组的特定行列
  17. CUMT2022网络攻防考试
  18. L1-8 牛的对称 (20 分)
  19. 闲鱼选品我使用的4个网站,附赠20个流量密码关键字!
  20. pdf转换成word转换器

热门文章

  1. 蓝牙广播“嗅探”模式应用
  2. 【利用AI让知识体系化】Webpack 相关配置技巧
  3. 开有多个门店的小老板如何记账和给员工发工资?
  4. 24届近5年南开大学自动化考研院校分析
  5. 程序员中年危机下的思路和应对方案
  6. 避雷不可见字符(‘‎‎\u200E‘)
  7. 福大软工1816 · 第八次作业课堂实践
  8. 欢(xue)乐(beng)%你赛
  9. Office Visio 2013安装
  10. 擅在各个现货黄金时间图捕捉时机