设为首页 收藏本站
查看: 365|回复: 0

[经验分享] Oracle 中单引号的三重身份

[复制链接]

尚未签到

发表于 2016-7-30 17:54:34 | 显示全部楼层 |阅读模式
  本人是个新手,第一次想把自己在工作过程中各方面技术的实践经验做个笔记,以方便自己温故而知新,也希望能给像我这样的菜鸟提供些许帮助。同时也希望路过的各位前辈多多指教,多多建议。

      单引号在 Oracle 中有三种身份:
      1. 用来引用一个字符串常量,也就是界定一个字符串的开始和结束
      2. 转义符,对紧随其后出现的字符(单引号)进行转义
      3. 表示它本身,也就是它作为一个字符串的一部分而出现在一个字符串常量中
  当具有不同身份的单引号紧挨着一起出现在 sql 语句中时常常令人迷惑不解,下面我将以自己总结出来的经验为基础,结合具体实例来告诉大家如何弄清每个单引号的含义。

总结经验:
1. 出现在表达式开头和结尾的这两个单引号的含义肯定是表示引用一个字符串,界定字符串的开始和结束
2. 如果单引号出现在表达式中间(即非表达式开头和结尾的单引号),且多个单引号之间没有任何其他字符,那么当我们从左向右分析时,第一对单引号中的第一个是转义符,它对紧随其后的第二个单引号进行转义,以使第二个单引号作为一个字符出现在一个字符串常量中。第二队,第三队,以此类推......
  下面用实例来验证自己的经验总结:
  示例一:

  
  上图中,表达式 '''' 中第1、4个单引号表示引用一个字符串常量,表达式的剩余部分我们从左往右分析,由于中间是一对单引号,故此对中的第一个是转义符,其对第二个进行转义,使第二个表示单引号本身。分析得出这里有一个字符串常量,其中只有一个单引号字符。sql 语句的运行结果与我们的分析结果一致。
  
  示例二:

 

      上图中,表达式 'exit''''' 中第一个和最后一个单引号表示引用一个字符串常量,表达式的剩余部分我们依然从左往右分析。剩余部分中,遇到的第一个单引号后面紧随一个单引号,我们将其作为一对,根据示例一,这一对的解析结果为一个单引号字符本身;然后继续向右走,又遇到一对紧挨着的单引号,同理,他们的解析结果也是一个单引号字符本身。分析得出这里的字符串常量包含exit和两个单引号字符。sql 语句的运行结果与我们的分析结果一致。

 

      说了这么多了,大家也该动动手,动动脑了。下面我给出几条 sql 语句及其执行结果,大家验证验证俺的经验总结,若有问题请不吝指教:

 

      练习一:

     


      注意:比对一下练习一与示例一的执行结果,练习一的执行结果中单引号字符的前后都有一个空格的。

 

      练习二:

     


 

       练习三:

      


 

想想练习二、三为什么报错?好了,就说这么多了,该午休一会儿了。

     

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251369-1-1.html 上篇帖子: Oracle 游标的学习与实例 下篇帖子: Oracle索引是干什么用的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表