quzq

 在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义。单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解   

 1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)
   select \'\'\'\' from dual; --output:\' # 第二个单引号被作为转义符,第三个单引号被转义,可将sql写成这样更好理解:select \' \'\' \' from dual --output:\'   
 
 2、连接符‘||’导致了新一轮的转义:连接符号‘||’左右的单引号没有任何的关系,除非‘||’是作为字符串的一部分(这在动态SQL中很常见)。 
   select \'name\'||\'\'\'\' from dual; --output:name\'  理解:||后面的作为一个字符串,即前后是\',中间又是一个密集型单引号串\'\',因此第一个为转义功能
   select \'name\'\'\'\'\' from dual --output:name\'\' 理解:第一个和最后一个单引号作为字符串引用符,中间四个单引号两两转义。   
 
 3. 举几个简单例子:   一个单引号,是最正常的情况,比如:\'asdfas\',这代表一个字符串,显示的内容是 asdfas  ;
   两个单引号,一般成对出现在一个单引号之内,表示一个单引号之内的单引号,比如 \'sdfs\'\'123\'\'dfsdf\',这种字符串显示的时候就是 sdfs\'123\'dfsdf
   三个或四个单引号的情况是在一个和两个的情况之上发展出来的,比如\'asd\'\'\'||\'输入值\'||\'\'\'\',它显示的时候内容就是: asd\'输入值\'
  (把一对两个单引号分开了,一部分在||之前,一部分在||之后) (后面四个单引号分开看,中间两个是一对--代表一对单引号之内的一个单引号,外边两个是一对--代表一对单引号
 
 4. 举例如下:
  z:=\'alter session set time_zone=\'\'\'||WET||\'\'\'\'
  alter session set time_zone=\'WET\'
 

分类:

技术点:

相关文章:

  • 2021-11-23
  • 2021-06-25
  • 2021-11-23
  • 2021-12-11
  • 2022-12-23
  • 2022-01-15
  • 2021-06-27
猜你喜欢
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案