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在调用时,默认的使用大写格式去数据字典中查询
       以列名为例:

代码:
[email protected]> 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
[email protected]> create table test("a" varchar2(10), a
varchar2(10));

Table created.

[email protected]> SELECT table_name,
column_name FROM user_tab_cols WHERE table_name =
‘TEST‘;

TABLE_NAME          
        
 COLUMN_NAME
------------------------------
------------------------------
TEST       
                 
 a
TEST             
             A
[email protected]>
insert into test values (‘1‘,‘1‘);

1 row created.

[email protected]>
commit;

Commit complete.

[email protected]> select * from
test;

a          A
----------
----------
1         
1
  以大写方式存在数据字典中,验证一下:
[email protected]> 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在处理格式字符串时,会忽略双引号



代码:
[email protected]> select to_char(sysdate,
‘hh24"小时"mi"分"ss"秒"‘) AS RESULT from
dual;

RESULT
------------------
17小时31分30秒


 
     单引号:
            
① 表示字符串常量
             ②
字符串中的双引号仅仅被当作一个普通字符进行处理。此时,双引号不需要成对出现
       
          例如:



代码:
[email protected]> select ‘hh24"小时""mi"分"""ss"秒"‘ AS
RESULT from
dual;

RESULT
-----------------------------
hh24"小时""mi"分"""ss"秒"


 
           ③ 动态SQL:
    
          
在一对单引号包含的语句中,必须有一对相邻的单引号表示一个单引号
          
     两个相邻的单引号的作用,第一个是用来表示转义字符,后面一个表示真正的单引号
    
          
单引号里要用单引号应该是两个连续的单引号,而不是双引号
          
     例如:



代码:
select ‘alter system kill session ‘‘‘‘||
sid||‘,‘||serial#|| ‘‘‘‘;‘ from v$session

Oracle 中单引号和双引号的区别,布布扣,bubuko.com

时间: 2024-10-18 05:16:54

Oracle 中单引号和双引号的区别的相关文章

PHP教程:PHP中单引号与双引号的区别分析

PHP教程:PHP中单引号与双引号的区别分析 在PHP中,我们可以使用单引号或者双引号来表示字符串.不过我们作为开发者,应该了解其中的区别.单引号与双引号对于定义字符一个是可以解析变量一个是会把变量直接输出来,同时单引号与双引号在字符处理上单引号要优与双引号 ①转义的字符不同 单引号和双引号中都可以使用转义字符(\),但只能转义在单引号中引起来的单引号和转义转义符本身.如果用双引号("")括起字符串,PHP懂得更多特殊字符串的转义序列. 1 ②对变量的解析不同 单引号字符串中出现的变量

php字符串中单引号''和双引号“”的区别

(1)双引号可以解析字符串中的变量,单引号不能 $a = 10; $str = "this a var $a"; //输出this a var 10 (2)在双引号中可以使用转义字符\n \r 等,在单引号中不能(单引号中只能转义单引号'' 和 转义字符本身\) $str = 'this a var \'a\''; //this a var 'a' (3) php字符串中单引号''和双引号""的区别

Unix Shell中单引号、双引号字符、反斜杠、反引号的使用

在执行shell脚本的时候,shell将会对脚本中的行进行解释,然后执行:对于一些特殊处理的句子,我们可以使用引号或者反斜线来避免shell解释执行之.如下,当在命令行中输入:echo *child.sh env_variable father.sh param.sh profile.sh 125017.sh默认会将当前文件夹下的所有文件都打印出来,但我们需要的是输出一个“*”.可以以这样的方式让shell不去解释星号(*):echo "*"* 下面是shell引用类型--------

关于js中单引号(')和双引号(")的使用以及转义的理解

引自:http://www.cnblogs.com/gengyulong/archive/2011/05/06/2038573.html <input name="'+mlist[index].value+biduinum+'" type="text" size="12" style="width: 200px" readonly="readonly"  onclick="WdatePick

单引号,双引号,三引号 的区别以及使用

python中单引号和双引号是等效的 字符串过长需要换行时,使用\,如 helloworldhelloworld 或者是直接使用'''(也可以用来注释),如 '''hello world''' 输出let's go的方法 >>> 'let\'s go' "let's go" >>> "let's go" "let's go" >>> '''let's go ''' "let's go

shell中单引号、双引号、反斜杠简说

需求:ssh远程修改文件,变量从文件中获取,插入远程服务器的文件里 shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符.单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号.(注意是所有,只是单引号本身不能够出现在其中). 双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外: $加变量名可以取变量的值 反引号仍表示命令替换 \$表示$的字面值 \`表示`的字面值 \"表示"的字面值 \\表示\的字面值

Linux Shell 中的反引号,单引号,双引号

反引号 反引号位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引号(')位于Enter键的左方的区别. 在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置. 如下,shell会执行反引号中的date命令,把结果插入到echo命令显示的内容中. [[email protected] sh]# echo The date is `date` The date is 2016年 08月 7日 星期日  19:25:43 CST 单引号,双

awk 打印单引号和双引号

今天遇到一个问题 awk 如何打印单引号和双引号 [[email protected] ~]# echo | awk '{print "\"" }'  " or [[email protected] ~]# echo |awk '{print "\x22"}' " [[email protected] ~]# echo | awk "{print \"'\" }"  # 比较喜欢这个方式,简单.容

每日linux命令学习-引用符号(反斜杠\,单引号&#39;&#39;,双引号&quot;&quot;)

引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(''),双引号(""). 单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要用于信息的原样输出,防止任何变量的扩展,双引号(软转义)允许变量扩展.转义符和命令替换.单引号保护双引号,双引号保护单引号. 1. 反斜杠 反斜杠通过解析器将1个字符转化为引用符号或转义. 1)在单引号内使用反斜杠,反斜杠不会被解析,保持原样输出. 2)在双引号内使用反斜杠,主要用于美元符