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
Oracle 中单引号和双引号的区别的更多相关文章
- 20、oralce中单引号和双引号的区别
20.oralce中单引号和双引号的区别: 20.1.单引号和双引号oracle都支持,但是两者是有区别的: 20.2.双引号在 Oracle 中的作用: 1.双引号的作用是:假如建立对象的时候,对象 ...
- PHP中单引号与双引号的区别分析
From: http://www.jb51.net/article/53973.htm 在PHP中,我们可以使用单引号或者双引号来表示字符串.不过我们作为开发者,应该了解其中的区别.单引号与双引号对于 ...
- js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量)
js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量) 一.总结 1.html中属性规范是 ...
- Python中单引号,双引号,三引号的区别
Python中的字符串一般用单引号('A'),双引号("A")和三引号('''A''')或者("""A""") 1.单引 ...
- Shell脚本中单引号(‘)和双引号(“)的使用区别
在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用”$param”这种带双引号的格式,但也有出现使用'$param'这种带引号的使用的场景,首 ...
- php 单引号,双引号,反引号区别
PHP中单引号,双引号,反引号具有不同的含义,最大的几项区别如下: 一.单引号中,任何变量($var).特殊转义字符(如"\t \r \n"等)不会被解析,因此PHP的解析速度更快 ...
- Unix Shell中单引号、双引号字符、反斜杠、反引号的使用[转]
在执行shell脚本的时候,shell将会对脚本中的行进行解释,然后执行:对于一些特殊处理的句子,我们可以使用引号或者反斜线来避免shell解释执行之.如下,当在命令行中输入:echo *child. ...
- PHP三种字符串界定符的区别(单引号,双引号,<<<)
单引号,双引号,<<<的区别如下: 前续:今天突然遇到了<<<EOT,可在运行的时候出错了,所以就度娘了下. 1.单引号:’a string’ \’是唯一的转 ...
- python单引号(')、双引号(")、三引号(''',""")
python对字符串的表示方法比c更有灵活性,但是也更难理解. 为了在平时使用.看代码过程中对着单引号(').双引号(").三引号(''',""")不混淆,知道 ...
- 每日linux命令学习-引用符号(反斜杠\,单引号'',双引号"")
引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(’‘),双引号(“”). 单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要 ...
随机推荐
- TensorFlow深度学习笔记 文本与序列的深度模型
Deep Models for Text and Sequence 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎st ...
- 如何学好C语言
我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子.比如:你长期地使用Java和.NET ,这些有虚拟机的语言对于开发便利是便利,但是 ...
- Visual Studio 2015 Update 3 RC 候选预览版粗来了
.Net 基金会 http://www.dotnetfoundation.org/ 更新的真快,刚打完2的补丁包,3就粗来了............ https://www.visualstudio. ...
- OC基础13:数字、字符串和集合2
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 17.Foundation框架的数组是有序 ...
- The 5th tip of DB Query Analyzer
The 5th tip of DB Query Analyzer Ma Genfeng (Guangdong UnitollServices incorporated, G ...
- java 命令行制定logback参数
-Dlogback.configurationFile=file:///export/Workspace/apache-cassandra/apache-cassandra-main/target/b ...
- js简易写法
我写JavaScript代码已经很久了,都记不起是什么年代开始的了.对于JavaScript这种语言近几年所取得的成就,我感到非常的兴奋:我很幸运也是这些成就的获益者.我写了不少的文章,章节,还有一本 ...
- transactionscope报“此操作对该事务的状态无效”问题
编写的保存方法里面有个transactionscope代码一直报“此操作对该事务的状态无效”,弄了半天,原来是超时问题(transactionscope默认超时时间是1分钟) 经过修改,设置了超时时间 ...
- linux 日志查看总结
1 grep "ERROR" catalina.log -a 20 -b 10 查看 catalina.log 中error的唯一 一行的后20行 前10行这种情况一般要唯一确定. ...
- java synchronized使用
java synchronized 基本上,所有并发的模式在解决线程冲突问题的时候,都是采用序列化共享资源的方案.这意味着在给定时刻只允许一个任务访问该资源.这个一般通过在代码上加一条锁语句实现,因为 ...