pixel 2019-03-20
概述
单引号用来标记字符串
双引号用来标记识别对象名
以下使用会比较绕:
字符串中出现单引号、双引号;
表或字段等对象的别名(alias)中出单引号、双引号;
单引号、双引号与空格一起使用;
双引号
双引号的作用是:假如建立对象的时候,对象名、字段名加双引号,则示意Oracle将严格区分大小写,否则Oracl都默认大写。
单引号、双引号、字符串
Oracle10g之前,字符串中出现单引号,可以用两个单引号来表示一个单引号,相当于转义。例子:
select 'I''m a String!' from dual;
-- 更多单引号的例子
select '''' from dual; -- 查询结果 表示一个单引号
select '一个单引号''' from dual;
select '两个单引号''''' from dual;
--双引号在字符串中不受影响。
select '"' from dual;-- 一个双引号
select '一个双引号"' from dual;
select '"两个双引号"' from dual;
从oracle10g开始,可以运用分隔符<>,[],{}来处理括起来的字符串,用法:前缀q'[string]'。分隔符中括起来的字符串中可以包含单/双引号,不用再转义。类似Python中的raw字符串:
官方解释:Use The Quote(q) operator and delimiter to allow the use of a single quotation mark with the literal character string in the SELECT clause.
--- 单引号
select q'[I'm a String!]' from dual;
select q'[I'''''m a String!]' from dual;
--- 双引号
select q'[I"m a String!]' from dual;
select q'[I"""""m a """"String!""""]' from dual;
Oracle 另一个转义关键字escape用在LIKE表达式中,常用来处理_或$。它们在表达式中表示特殊含义,需要转义表示就需要查找这个字符本身而不是把它当通配符用:
select COL1 from TAB1 where COL1 like '%\_io\_%' escape '\';
escape后面接任意字符比如常用的# \ @ &,紧接着这个字符后面的字符将失去通配符的功能。