oracle存储过程中拼接字符串及转义逗号
在ORACLE中,单引号有两个作⽤,⼀是字符串是由单引号引⽤,⼆是转义。单引号的使⽤是就近配对,即。⽽在单引号充当转义⾓⾊时相对不好理解
1、从第⼆个单引号开始被视为转义符,如果第⼆个单引号后⾯还有单引号(哪怕只有⼀个)
oracle 字符串转数组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'
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论