Oracle 中单引号和双引号的区别
问题产生原因:
insert into t_Cluster_Showresult(Outhostname,Domainlist,Iplist,Classify) values ("2014512-7","www.renren.com\twww.baidu.com","192.168.2.1","2")
此条语句执行不成功,报错列不允许,经查,是因为双引号的问题,改成insert into t_Cluster_Showresult(Outhostname,Domainlist,Iplist,Classify) values ('2014512-7','www.renren.com\twww.baidu.com','192.168.2.1','2012') 即可。
但在字符集不一致的时候,双引号和单引号区别还是很大的
而且,使用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
转载于:https://www.cnblogs.com/tina-smile/p/3724727.html
Oracle 中单引号和双引号的区别相关推荐
- Bash中单引号和双引号之间的区别
本文翻译自:Difference between single and double quotes in Bash 在bash,什么是单引号(之间的差异'' )和双引号( "" ) ...
- python中单引号,双引号,多引号区别
先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 = "hello,world" 如果要写成多行,那么就要使用\ ("连行符" ...
- python中单引号和双引号的区别_python中单引号,双引号,多引号区别
先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 = "hello,world" 如果要写成多行,那么就要使用\ ("连行符")吧 ...
- python单双三引号区别_python中单引号,双引号,多引号区别_python中单双引号
python中单引号,双引号,多引号区别 先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 = "hello,world" 如果要写成多行,那么就要使 ...
- php中双引号的区别,PHP中单引号和双引号的区别
好久没有写博客了,都忘了积累知识啦--现在开始全新的生活,重拾记录的习惯.今天要写的就是PHP中单引号和双引号的区别.在PHP中,我们可以使用单引号或者双引号来表示字符串.不过我们作为开发者,应该了解 ...
- js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量)...
js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量) 一.总结 1.html中属性规范是 ...
- Python中单引号和双引号的区别
Python中单引号和双引号的区别 Introduction Python是一门广泛应用于各种领域的编程语言,它有着简单易学的语法以及丰富的功能.在Python中,单引号和双引号都可以用来表示字符串, ...
- JS、html中单引号与双引号的区别
JS.html中单引号与双引号的区别 (学习留存,如有侵权,请告知,立刻删除!) 首先要说明,在JS中单引号与双引号可以同时使用,但是要有规则. 一.外面用了双引号,里面就不可以在用双引号了:外面用了 ...
- python中单引号和双引号的区别_python中单引号,双引号,多引号区别_python中单双引号...
python中单引号,双引号,多引号区别 先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 = "hello,world" 如果要写成多行,那么就要使 ...
- php 引号和单引号的区别,PHP中单引号和双引号的区别
原标题:PHP中单引号和双引号的区别 在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ". 但是必须使用同一种单或双引号来定义字符串,如:'Hello W ...
最新文章
- 二叉树中序遍历-递归与非递归
- 路由跟踪命令.查看DNS、IP、Mac等
- python语言使用什么语句实现上下文管理协议_Python with语句上下文管理器两种实现方法分析...
- H.264/AVC 标准中CAVLC 和CABAC 熵编码算法研究
- 程序员面试金典 - 面试题 16.04. 井字游戏(计数)
- 云评测 | OpenStack智能运维解决方案 @文末有福利!
- 【Pytorch】interpolate==>上下采样函数
- android --多线程下载
- 怎么一步步编写简单的PHP的Framework(十九)
- idea开发springboot的一些小干货
- Python(三)微信公众号开发
- python docx 图片_python-docx设置图片大小和对齐方式
- IDEA必用插件 - 变量名中文转英文API注释翻译:Translation
- 设置matlab关联文件,matlab2014b怎样设置文件关联
- 读易[2]·该出手时就出手(乾卦)
- JAVA Date 工具类 常用
- 中学计算机课外小组活动计划,课外活动计划实施方案
- SwiftUI中NavigationLink多层嵌套导航无法返回上一层的原因及解决
- sql 除法中如何防止被除数为0,以及SUM和舍入为指定的小数位数函数
- 蓝桥杯官网python组基础练习-入门01-04