【转】【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或是开发人员甚至可能鲁莽地直接添加导致阻塞相应业务,甚至可能因为资源欠缺造成实例的全局问题.当然这都 ...
随机推荐
- tp5 model 中的查询范围(scope)
查询范围scope在model中定义,在controller中使用 namespace app\index\model; use think\Model; class User extends Mod ...
- 静态代理&动态代理
原文地址:http://blog.csdn.net/partner4java/article/details/7048879 静态AOP和动态AOP. 静态代理: 代理对象与被代理对象必须实现同一个接 ...
- [图像]判断图片是PNG还是JPG格式
typedef NS_ENUM(NSInteger, NSPUIImageType) { NSPUIImageType_JPEG, NSPUIImageType_PNG, NSPUIImageType ...
- js中substr,substring,slice。截取字符串的区别
substr(n1,n2) n1:起始位置(可以为负数) n2:截取长度(不可以为0,不可以为负数,可以为空) 当n1为正数时,从字符串的n1下标处截取字符串(起始位置),长度为n2. 当n1为负数时 ...
- Redis 慢速入门(一)
网上关于redis的入门文章其实已经很多了,这里仅仅以作者特独的视角来学习下redis相关的基础概念. 一切的基础 需要分清楚3个重要的概念,key,type,value. 这里的key为hello, ...
- CozyRSS2开发记录0-win10开坑
1.回顾 距离上一篇<CozyRSS1.0 - 有可用性版本>,恰好两个月整.在初步完成CozyRSS的WPF桌面版后,按照设想的,开始搞一个手机版的CozyRSS.由于种种原因,并没有使 ...
- dir命令只显示文件名
dir /b 就是ls -f的效果 1057 -- FILE MAPPING_web_archive.7z 2007 多校模拟 - Google Search_web_archive.7z 2083 ...
- Beginning Scala study note(3) Object Orientation in Scala
1. The three principles of OOP are encapsulation(封装性), inheritance(继承性) and polymorphism(多态性). examp ...
- SpringMVC(三) RequestMapping修饰类
SpringMVC使用@RequestMapping 注解为控制器指定可以处理哪些URL请求. 可以用于类定义以及方法定义: 类定义:提供初步的请求映射信息.相对于WEB应用的根目录. 方法处:提供进 ...
- 函数式编程之柯里化(curry)
函数式编程curry的概念: 只传递给函数一部分参数来调用函数,然后返回一个函数去处理剩下的参数. var add = function(x) { return function(y) { retur ...