Oracle双引号和单引号的区别小结Oracle双引号和单引号的区别小结
一般情况下,我们使用单引号居多
但在字符集不一致的时候,双引号和单引号区别还是很大的
而且,使用ODBC桥导入外部数据的时候,表名是带双引号的
先看个案例:
以前遇到过一个这样的问题
一个朋友在创建表时,表名采用小写,并且表名用双引号括了起来
表已经创建了,但是在查询的时候,显示表名不存在,可在user_tables又能看到这张表
观察得出,加了双引号的小写表名存入数据库后也是小写
用双引号扩起来的标识符都作为原来的大小写格式存放在数据字典中
而Oracle在调用时,默...
Oracle双引号和单引号的区别
一般情况下,我们使用单引号居多
但在字符集不一致的时候,双引号和单引号区别还是很大的
而且,使用ODBC桥导入外部数据的时候,
名是带双引号的
先看个案例:
以前遇到过一个这样的问题
一个朋友在创建表时,表名采用小写,并且表名用双引号括了起来
表已经创建了,但是在查询的时候,显示表名不存在,可在user_tables又能看到这张表
观察得出,加了双引号的小写表名存入数据库后也是小写
用双引号扩起来的标识符都作为原来的大小写格式存放在数据字典中
而Oracle在调用时,默认的使用大写格式去数据字典中查询
以列名为例:
复制
到剪贴板
代码:
sys@EMREP> create table test(a varchar2(10), a varchar2(10));
create table test(a varchar2(10), a varchar2(10))
* ERROR at line 1:
ORA-00957: duplicate column name sys@EMREP> create table test("a" varchar2(10), a varchar2(10));
Table created.
sys@EMREP> SELECT table_name, column_name FROM user_tab_cols WHERE
table_name = 'TEST';
TABLE_NAME COLUMN_NAME ------------------------------ ------------------------------
TEST a
TEST A
sys@EMREP> insert into test values ('1','1');
1 row created.
sys@EMREP> commit;
Commit complete.
sys@EMREP> select * from test;
a A
---------- ----------
1 1
以大写方式存在数据字典中,验证一下:
sys@EMREP> create table test_xxxx(a varchar2(1), "A" varchar2(1));
create table test_xxxx(a varchar2(1), "A" varchar2(1))
* ERROR at line 1:
ORA-00957: duplicate column name
双引号括起来的更确切一点叫 "引证标识符"
比如我们创建一张表,我们在写CREATE语句的时候,就算表名
用小写,数据字典里存储的所有标识符还是大写的
但是要想在数据字典里存储小写的标识符,那写CREATE语句的
时候就得用双引号
所以要标识符区分大小写,或在标识符中包含空格,或者使用
保留字做标识符,就得用双引号括起来的引证标识符
双引号:
? 表示其内部的字符串严格区分大小写
? 用于特殊字符或关键字
? 不受标识符规则限制
? 会被当成一个列来处理
? 当出现在to_char的格式字符串中时,双引号有特殊的作用,就是将非法的格式符包装起来
避免出现ORA-01821: date format not recognized
错误, to_char在处理格式字符串时,会忽略双引号
复制内容到剪贴板
代码:
sys@EMREP> select to_char(sysdate, 'hh24"小时"mi"分"ss"秒"') AS RESULT
from dual;
RESULT
------------------
17小时31分30秒
单引号:
? 表示字符串常量
? 字符串中的双引号仅仅被当作一个普通字符进行处理。此时,双引号不需要成对出现
例如:
复制内容到剪贴板
代码:
sys@EMREP> select 'hh24"小时""mi"分"""ss"秒"' AS RESULT from dual;
RESULT
----------------------------- hh24"小时""mi"分"""ss"秒"
? 动态SQL:
在一对单引号包含的语句中,必须有一对相邻的单引号表示一个单引号
两个相邻的单引号的作用,第一个是用来表示转义字符,后面一个表示真正的单引号
单引号里要用单引号应该是两个连续的单引号,而不是双引号
例如:
复制内容到剪贴板
代码:
select 'alter system kill session ''''|| sid||','||serial#|| '''';' from
v$session
本文档为【Oracle双引号和单引号的区别小结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。