在MySQL concat里面使用多个单引号,三引号的问题
在动态拼接字符串时,我们常会用到字符拼接,我对拼接的引号不理解,如:
1、'''+id+'''为什么是3个引号,为什么左边一个加号右边一个加号(能不能着重帮我解释下这个,详细点)
SQLcode
sum(caseLeavewhen'''+id+'''thenDaysNoelse0end)['+name+']'
正常语句:
SQLcode
SUM(CASELeaveWHEN'01'THENDaysNoEND)AS[事假],
SUM(CASELeaveWHEN'02'THENDaysNoEND)AS[病假]
简答:
简单的来说一般单引号是拼接语句用的,3个引号拼接是字符串变量值。
因为引号是有特殊含义的,所以要写2次,进行转义
2、字符串单引号和双引号有区别吗?
简单来说,如果是正常使用就单引号,,如果你在单引号里面还要使用单引号。那么就要额外增加一个单引号(转义使用),变成3个单引号。
在标准SQL中,字符串使用的是单引号。
如果字符串本身也包括单引号,使用两个单引号(注意,不是双引号,字符串中的双引号不需要另外转义)。
MySQL对SQL的扩展,允许使用单引号和双引号两种。
简单总结:
通过concat拼字符串的时候,如果语句里面需要使用单引号,可以使用两个单引号来代替一个引号
mysql>selectconcat('dropuser''''@','''',@@hostname,''''); +----------------------------------------------------+ |concat('dropuser''''@','''',@@hostname,'''')| +----------------------------------------------------+ |dropuser''@'bei-f0q5bc2.gemalto.com'| +----------------------------------------------------+ 1rowinset(0.00sec)
补充拓展:mysql插入字符串带单引号+双引号
如下所示:
StringneedInsertStr=单双引号的字符串; StringfinalStr=needInsertStr.replaceAll("'","\\\\\'");//作用等于在单引号前面加上转义符号\ //对于其他特殊字符也是一样 longdateMillions=System.currentTimeMillis(); StringBuilderstringBuilder=newStringBuilder(); stringBuilder.append("insertinto"); 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(")"); returnstringBuilder.toString(); //script字段即是带单双引号的字符串
insertintotable(string)values('“这是测试语句”+\'测试单双引号\'‘)
以上这篇在MySQLconcat里面使用多个单引号,三引号的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。