mysql is双竖线_oracle中的单引号和双竖线||以及q'间隔符
单引号在 Oracle 中有三种身份:
1. 用来引用一个字符串常量,也就是界定一个字符串的开始和结束
2.转义符,对紧随其后出现的字符(单引号)进行转义
3. 表示它本身,也就是它作为一个字符串的一部分而出现在一个字符串常量中
当具有不同身份的单引号紧挨着一起出现在 sql 语句中时常常令人迷惑不解,下面我将以自己总结出来的经验为基础,结合具体实例来告诉大家如何弄清每个单引号的含义。
总结经验:
1. 出现在表达式开头和结尾的这两个单引号的含义肯定是表示引用一个字符串,界定字符串的开始和结束
2. 如果单引号出现在表达式中间(即非表达式开头和结尾的单引号),且多个单引号之间没有任何其他字符,那么当我们从左向右分析时,第一对单引号中的第一个是转义符,它对紧随其后的第二个单引号进行转义,以使第二个单引号作为一个字符出现在一个字符串常量中。第二队,第三队,以此类推......
下面用实例来验证自己的经验总结:
示例一:
select '''' from dual;
result '
上图中,表达式 '''' 中第1、4个单引号表示引用一个字符串常量,表达式的剩余部分我们从左往右分析,由于中间是一对单引号,故此对中的第一个是转义符,其对第二个进行转义,使第二个表示单引号本身。分析得出这里有一个字符串常量,其中只有一个单引号字符。sql 语句的运行结果与我们的分析结果一致。
示例二:
select 'exit''''' from dual
result exit''
上图中,表达式 'exit''''' 中第一个和最后一个单引号表示引用一个字符串常量,表达式的剩余部分我们依然从左往右分析。剩余部分中,遇到的第一个单引号后面紧随一个单引号,我们将其作为一对,根据示例一,这一对的解析结果为一个单引号字符本身;然后继续向右走,又遇到一对紧挨着的单引号,同理,他们的解析结果也是一个单引号字符本身。分析得出这里的字符串常量包含exit和两个单引号字符。sql 语句的运行结果与我们的分析结果一致。
###########################################################
||双竖线表示连接字符串
select 'SET NEWNAME FOR DATAFILE '|| file# ||' to ' ||''''|| name ||''''|| ';' from v$datafile;
查询结果例子:SET NEWNAME FOR DATAFILE 1 to '+DATA/HADB/DATAFILE/system.316.1018842199';
在转义特殊字符的时候通常使用的就是单引号。但这种转义方式很不直观。在oracle中使用q' 来对特殊字符进行转义。q'转义符通常后面使用! [] {} () <>等转义符号(成双的),也可以使用\ ,也可以用字母、数字、=、+、-、*、&、$、%、#等,不可以使用空格
SQL> select q'8is good d8' from dual;
Q'8ISGOOD
---------
is good d
###############################################
示例三:select 'alter database rename file '''||member||q'[' to '/u01/app/oracle/fast_recovery_area/redo';]' from v$logfile;
查询结果例子:alter database rename file '+DATA/HADB/ONLINELOG/group_4.285.1018847393' to '/u01/app/oracle/fast_recovery_area/redo1';
示例三解析:遇到第一个||之前,解析 'alter database rename file ' 为 alter database rename file,第三个单引号是转义符,把第四个单引号转化为本身即单引号,第二个双竖线||之后的 q' 开始表示使用它来规定某些自定义的转义符,这里转义符是 [] 中括号,然后
第一个左中括号把单引号转义为单引号及空格,最后的右中括号]是兜底。其实转义的一整块是 q'[' to '/u01/app/oracle/fast_recovery_area/redo';]'
mysql is双竖线_oracle中的单引号和双竖线||以及q'间隔符相关推荐
- java单引号和双引号_Java中的单引号和双引号之间有区别吗?
字符是单个UTF-16字符,即字母,数字,标点符号,制表符,空格或类似内容. 字符文字是这样的单个字符,并用单引号引起来 char myCharacter = 'g'; 或转义序列,甚至是unicod ...
- js html 单引号,JS 和 HTML 中的单引号与双引号
JS中的单引号与双引号 HTML中的单引号与双引号很简单,就是两个字符实体: 显示 描述 实体名称 实体编号 " 双引号.引号 " " ' 单引号.撇号 ' ' x 1 ...
- html中单引号与双引号区别,JS 和 HTML 中的单引号与双引号
JS中的单引号与双引号 HTML中的单引号与双引号很简单,就是两个字符实体: 显示 描述 实体名称 实体编号 " 双引号.引号 " " ' 单引号.撇号 ' ' x 1 ...
- c语言双引号和单引号的区别_Python中的单引号和双引号有什么区别?
在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符串.但是这两种通用的表达方式可以避免出错之外,还可以减少转义字符的使用,使程序看起来更清晰. 举两个例子: 1.包含单引号的字符 ...
- java中双引号和单引号_Java中的单引号和双引号之间有区别吗?
问题 Java中的单引号和双引号之间有区别吗? #1 热门回答(126 赞) 对于literalchar使用单引号,对于literalString使用双引号,如下所示: char c = 'a'; S ...
- php双引号表示什么,PHP中的单引号和双引号字符串有什么区别?
PHP中的单引号和双引号字符串有什么区别? 我不是PHP编程的专家,但我有点困惑为什么我在PHP中看到一些代码用单引号放入字符串,有时用双引号. 我只是在.NET或C语言中知道,如果它是单引号,这意味 ...
- PostgreSQL 中的单引号与双引号
PostgreSQL 中的单引号与双引号 在pg中的sql,单引号用来标识实际的值,双引号用来标识表名(table name)或列名(column name)等数据库中存在的值. 如,执行一句quer ...
- python代码什么时候用单引号_Python 中的单引号和双引号有什么区别?
在Python当中可以使用单引号,也可以使用双引号,那两者有什么区别吗? 简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符串.但是这两种通用的表达方式,除了可以简化程序 ...
- Python中的单引号和双引号 的使用有什么区别
在Python当中表达字符串既可以使用单引号,也可以使用双引号 简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符串.但是这两种通用的表达方式,除了可以简化程序员的开发, ...
最新文章
- 教程 | 算法太多挑花眼?教你如何选择正确的机器学习算法
- VMware三种链接方式
- 浅谈相对定位与绝对定位
- 【Flink】Too many fields referenced from an atomic type
- HDU-2063-过山车(二分匹配)
- 8.4 bert的压缩讲解 意境级
- cryptapi双向认证_2019 08 28 netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》...
- qt之qthread的使用
- 【金万维】天联高级版客户端登陆后,打开U8提示服务器端要求网络级身份证(NLA)
- 免费采集软件智能万能采集数据
- 廉颇老矣?尚能饭否?64岁的Python之父被微软录取!
- windows10如何查看电池损耗
- Chrome插件安装以及常见问题
- mne plot出错_MNE-Python 环境配置 | win 10
- react开发vscode插件推荐
- CCNA学习笔记7--动态路由协议概念和RIP
- JavaScript中slice()、splice()、split()、join()、unshift()、push()
- IntelliJ IDEA 2018版本操作总结(长期更新)
- 2010年10月20日
- 计算机辅助光学设计 code v s2,计算机辅助光学设计-code-v-s2复习进程.ppt