【转】【10g SQL新特性】q-quote使用
转自:http://blog.chinaunix.net/uid-7655508-id-3684042.html
转发只为留存学习
在Oracle中,字符串的字面量如果含有单引号,那么必须转义,而且转义符是单引号',这样加上表示字符串字面量的外层'',那么势必要写很多单引号,不仅可读性降低,而且容易出错。当然,使用chr(39),也可以代替引号,可能比写多个单引号更好,可读性强,但是毕竟这种写法不是很常见。SO,在10g中,Oracle引入了q-quote的用法。
常规字符字面量内单引号的使用:
dingjun123@ORADB> select ''' str from dual;
ERROR:
ORA-: 引号内的字符串没有正确结束 --要使用转义,两个单引号表示一个单引号
dingjun123@ORADB> select '''' str from dual;
S
-
' dingjun123@ORADB> select '''a''' str from dual;
STR
---
'a'
另外可以使用CHR(39)作为引号来拼凑,比较简洁:
dingjun123@ORADB> SELECT 'It'||chr()||' a cat' str FROM dual;
STR
---------
It' a cat
虽然使用chr(39),但是看起来还是很麻烦,所以10g引入了q-quote特性。允许按照指定规则也就是Q或q开头(如果是national character literals,那就是N或n放在Q或q之前),然后'界定符号原始字面量界定符号',使用规则很简单:
1) q-quote界定符可以是除了TAB,空格,回车外的任何单字节或多字节字符。
2) 除了单字节的的开始界定符是[,{,<,(,那么结束界定符必须是],},>,) 其他开始界定符与结束界定符必须一致
如:
--4个特殊单字节开始界定符是[,{,<,(,结束界定符必须是],},>,)
dingjun123@ORADB> SELECT q'[a'bc]' str FROM dual;
STR
----
a'bc dingjun123@ORADB> SELECT q'{a'bc}' str FROM dual;
STR
----
a'bc dingjun123@ORADB> SELECT q'' str FROM dual;
STR
----
a'bc dingjun123@ORADB> SELECT q'(a'bc)' str FROM dual;
STR
----
a'bc
--因为【开始界定付是多字节,所以必须一致,特殊的就4个单字节界定符
dingjun123@ORADB> SELECT q'【a'bc[' FROM dual;
ERROR:
ORA-: 引号内的字符串没有正确结束 dingjun123@ORADB> SELECT q'【a'bc【' FROM dual;
Q'【
----
a'bc
--因为]不是4个特殊界定符的开始界定符
dingjun123@ORADB> SELECT q']a'bc[' FROM dual;
ERROR:
ORA-: 引号内的字符串没有正确结束 dingjun123@ORADB> SELECT q']a'bc]' FROM dual;
Q']A
----
a'bc
--其他非特殊的4个开始界定符的要求开始与结束一致
--a是界定符
dingjun123@ORADB> SELECT q'ab'cda' str FROM dual; STR
----
b'cd
--A是界定符,但是结束的是a,不一致
dingjun123@ORADB> SELECT q'Ab'cda' str FROM dual;
ERROR:
ORA-: 引号内的字符串没有正确结束 dingjun123@ORADB> SELECT q'Ab'cdA' str FROM dual;
STR
----
b'cd
--+号是界定符
dingjun123@ORADB> SELECT q'+b'cd+' str FROM dual;
STR
----
b'cd
--单引号是界定符
dingjun123@ORADB> select q''ab'c'' from dual;
Q''A
----
ab'c
--National character literals
dingjun123@ORADB> SELECT nq'' str from dual;
STR
----------
a'b'c dingjun123@ORADB> SELECT Nq'' str from dual;
STR
----------
a'b'c dingjun123@ORADB> SELECT NQ'' str from dual;
STR
----------
a'b'c dingjun123@ORADB> SELECT nQ'' str from dual;
STR
----------
a'b'c
一般使用的时候,都是使用4个特殊字符作为界定符,这样前后界定符包含了原生态字符串,可读性更好。
【转】【10g SQL新特性】q-quote使用的更多相关文章
- ABAP 7.52 中的Open SQL新特性
S/4 HANA 1709 已经在几个月前发布,随之而来的是ABAP 7.52. 本文翻译了更新文档中有关Open SQL的部分 本文链接:http://www.cnblogs.com/hhelibe ...
- ABAP 7.40, SP08 中的 Open SQL 新特性
1,使用 data_source~*指定列 在7.40, SP08中,可以在SELECT语句中使用data_source~*来指定选取不同的数据库表.视图的全部列来作为结果集.它也可以和单独指定的列c ...
- ElasticSearch7.3学习(三十)----ES7.X SQL新特性解析及使用Java api实现sql功能
一.ES7 sql新特性 1.1 数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期 四个字段 PUT /tvs PUT /tvs/_mapping { "properties&quo ...
- Oracle 11g新增not null的字段比10g快--新特性
在11g之前添加一个not null的字段很慢.在11g之后就很快了.我们先做一个測试,然后探究下原理. SQL> select * from v$version; BANNER ------- ...
- ABAP 7.53 中的ABAP SQL(原Open SQL)新特性
S/4 HANA 1809 已经在上月发布,随之而来的是ABAP 7.53. 本文是更新文档中ABAP SQL的部分的翻译. 本次更新的内容较多,主要内容包括:Open SQL更名为ABAP SQL: ...
- ABAP 7.50 新特性 – Open SQL中的宿主表达式和其它表达式
在长期的停滞后,Open SQL的发展终于从沉睡中醒来.从ABAP 7.40开始,SAP推进了某些关键的改变,以尽可能地包含SQL92中的特性,并提供与ABAP CDS中的DDL里面的SELECT一样 ...
- 【HANA系列】SAP HANA 1.0 SPS 11 新特性
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 1.0 SPS ...
- SQL Server 2014 新特性——内存数据库
SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...
- Sql Server 2012新特性 Online添加非空栏位.
我们都知道,Sql Server在一个数据量巨大的表中添加一个非空栏位是比较费心的,缺乏经验的DBA或是开发人员甚至可能鲁莽地直接添加导致阻塞相应业务,甚至可能因为资源欠缺造成实例的全局问题.当然这都 ...
随机推荐
- 解决上一篇jquery中on的疑惑
内容都是来自:http://www.365mini.com/page/jquery-on.htm.这里做一下收藏.文章的最后 疑问和解答可以解决所有的疑惑 看了之后能更好的整篇文章. on()函数 ...
- STM32F412应用开发笔记之二:基本GPIO控制
NUCLEO-F412ZG板子上的元器件并没有完全焊接,除去ST-LINK部分和电源部分后,还有用一个USB主机接口,三个LED灯和两个按钮,不过很多功能引脚都已经引到了插针.查看原理图可发现,由原理 ...
- Android-RelativeLayout(相对布局)
1.RelativeLayout(相对布局) 2.margin针对的是容器中的组件,而padding针对的是组件中的元素
- linux history命令显示时间
在CentOS上使用history查看历史使用的CMD记录时,发现没有时间,在当前用户的.bash_profile里面,添加 export HISTTIMEFORMAT="%F %T `w ...
- 名词含义阅读 todolist
1.node webkit 2.C#设计模式 3.算法导论 4.SQLSERVER RowNum() 5.图片文字识别 6.tuple 7.yield 8.Web语义化 (多用 p ul ol li ...
- VirtualBox上搭建Ubuntu开发环境
软件版本: VirtualBox虚拟机:5.1.8 for Windows hosts x86/amd64 Ubuntu系统:Ubuntu 14.04.5 LTS Desktop (32-bit) ...
- C 标准库系列之ctype.h
ctype.h 主要提供了一些函数用以测试字符或字符处理的功能函数:包括字符判断检测.字符转换: 目前ASCII字符可分为以下一些类型,如:大写.小写.字母.数字.十六进制.空白字符.可打印字符.控制 ...
- Flashback Data Archive ( Oracle Total Recall ) introduced in 11g
Flashback Data Archive feature is part of Oracle Total Recall technology. Flashback Data Archive fea ...
- Linux下设置Mysql数据库编码
重装系统后,要装个mysql服务器,发现添加数据时,一直错误,查其原因,原来时编码问题.Google了一下,可都不太一样,可能时数据库版本问题吧. 查看数据库版本: select version(); ...
- 【iOS】UITabView/UICollectionView 全选问题
UITabView/UICollectionView 全选问题 SkySeraph July. 30th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySera ...