mysql单引号转义_sql语句中使用单引号’作为转义字符

mysql单引号转义_sql语句中使用单引号’作为转义字符在 SQL 中 我们都知道单引号 表示字符串的开始和结束符号 如 select fromstudents 小明 但如果字符串里面有单引号时 应该怎么查询呢 这是我最近遇到的一个问题 需求是对一张表的数据进行更新 但各个环境的数据并不一致 只能通过拼接的方式生成适合对应环境的变更脚本 更新语句格式如下 1updatestude

在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语句的脚本初始如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

–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);

48304ba5e6f9fe08f3fa1abda7d326ab.png

结果如下:

518dab2e19f1dc4a2cc23de28b25068e.png

可以发现,字符串值没有单引号,直接运行会报错。google后找到解决办法。sql单引号

sql的转义字符单引号 ‘ ,可以对字符串中的单引号进行转义,使其表示字符串值 ‘ ,这样如果要查询 name 为 小’明 的值,其sql语句如下:

select * from students where name = ‘小”明’;

所以上面的拼接脚本修改如下,即可生成正确的update语句。

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220791.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:38
下一篇 2026年3月17日 下午7:39


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号