在MySQL concat里面使用多个单引号,三引号的问题

所属分类: 数据库 / Mysql 阅读数: 1823
收藏 0 赞 0 分享

在动态拼接字符串时,我们常会用到字符拼接,我对拼接的引号不理解,如:

1、'''+ id +''' 为什么是3个引号,为什么左边一个加号右边一个加号(能不能着重帮我解释下这个,详细点)

SQL code

sum(case Leave when '''+ id +''' then DaysNo else 0 end) ['+ name +']'

正常语句:

SQL code

SUM(CASE Leave WHEN '01' THEN DaysNo END) AS [事假],
SUM(CASE Leave WHEN '02' THEN DaysNo END) AS [病假]

简答:

简单的来说一般单引号是拼接语句用的,3个引号拼接是字符串变量值。

因为引号是有特殊含义的,所以要写2次,进行转义

2、字符串单引号和双引号有区别吗?

简单来说,如果是正常使用就单引号,,如果你在单引号里面还要使用单引号 。那么就要额外增加一个单引号(转义使用),变成3个单引号。

在标准 SQL 中,字符串使用的是单引号。

如果字符串本身也包括单引号,使用两个单引号(注意,不是双引号,字符串中的双引号不需要另外转义)。

MySQL对 SQL 的扩展,允许使用单引号和双引号两种。

简单总结:

通过concat拼字符串的时候,如果语句里面需要使用单引号,可以使用两个单引号来代替一个引号

mysql> select concat('drop user ''''@', '''', @@hostname, '''');
+----------------------------------------------------+
| concat('drop user ''''@', '''', @@hostname, '''') |
+----------------------------------------------------+
| drop user ''@'bei-f0q5bc2.gemalto.com'       |
+----------------------------------------------------+
1 row in set (0.00 sec)

补充拓展:mysql插入字符串带单引号+双引号

如下所示:

String needInsertStr= 单双引号的字符串;

String finalStr = needInsertStr.replaceAll("'", "\\\\\'"); //作用等于在单引号前面加上转义符号\
//对于其他特殊字符也是一样

long dateMillions = System.currentTimeMillis();

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("insert into ");
stringBuilder.append(tableName);
stringBuilder.append("(uuid,name,metric_id,service_id,script,deleted,created,updated) ");
stringBuilder.append("values(uuid(),'");
stringBuilder.append(name);
stringBuilder.append("','");
stringBuilder.append(name);
stringBuilder.append("','");
stringBuilder.append(serviceId);
stringBuilder.append("','");
stringBuilder.append(finalStr);
stringBuilder.append("',0,");
stringBuilder.append(dateMillions);
stringBuilder.append(",");
stringBuilder.append(dateMillions);
stringBuilder.append(")");

return stringBuilder.toString();

// script字段即是带单双引号的字符串

insert into table(string) values(' “这是测试语句”+\'测试单双引号\' ‘)

以上这篇在MySQL concat里面使用多个单引号,三引号的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

MySQL中按照多字段排序及问题解决

这篇文章主要介绍了MySQL中按照多字段排序及问题解决的方法,非常的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

MySQL外键使用详解

两天有人问mysql中如何加外键,今天抽时间总结一下。mysql中MyISAM和InnoDB存储引擎都支持外键(foreign key),但是MyISAM只能支持语法,却不能实际使用。
收藏 0 赞 0 分享

Mysql中LAST_INSERT_ID()的函数使用详解

从名字可以看出,LAST_INSERT_ID即为最后插入的ID值,有了这个实用的函数,我们可以实现很多问题,下面我们就来深入探讨下。
收藏 0 赞 0 分享

MySql insert插入操作的3个小技巧分享

这篇文章主要介绍了MySql insert插入操作的3个小技巧分享,本文讲解了插入的数据来源自其他表、插入时排除(忽略)重复记录、插入时遇到重复记录做更新操作三个小技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql修改自增长主键int类型为char类型示例

这篇文章主要介绍了mysql修改自增长主键int类型为char类型示例,需要的朋友可以参考下
收藏 0 赞 0 分享

Windows下使用Cygwin编译MySQL客户端

这篇文章主要介绍了Windows下使用Cygwin编译MySQL客户端,本文详细的讲解了编译过程,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL数据库优化推荐的编译安装参数小结

这篇文章主要介绍了MySQL数据库优化推荐的编译安装参数小结,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL之Field‘***’doesn’t have a default value错误解决办法

这篇文章主要介绍了MySQL之Field‘***’doesn’t have a default value错误解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

php连接MySQL的两种方式对比

这篇文章主要介绍了php连接MySQL的两种方式对比,一种是原生的链接方式另外一种是PDO方式,附上示例,推荐给大家,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

Mysql InnoDB删除数据后释放磁盘空间的方法

这篇文章主要介绍了Mysql InnoDB删除数据后释放磁盘空间的方法,Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长,本文就讲解释放磁盘空间的方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多