Oracle中的直引号和弯引号

最近在肝空间数据库的课设,在照着老师给的教程学Oracle的起步阶段就被气到了,编程三年了,第一次碰到引号的格式错误,直接浪费我两小时(=。=)

首先直观展示一下两种引号的区别,其实看起来还是挺明显的:

’LONGITUDE’
'LONGITUDE'

话不多说,开始正题~

弯引号的报错

众所周知,老师的实验教程肯定是保存在word里面,方便我们嫖代码(老师有心了hhh)。下面是教程中的一段代码,目的是向空间元数据表插入记录(为了方便查错写得比较松散,请见谅):

  1  INSERT  INTO  USER_SDO_GEOM_METADATA  VALUES
  2  (
  3  ’SPATIALTEST’,
  4  ’LOC’,
  5  SDO_DIM_ARRAY
  6  (
  7  SDO_DIM_ELEMENT
  8  (
  9  ’Longitude’,
 10  -180,
 11  180,
 12  10
 13  ),
 14  SDO_DIM_ELEMENT
 15  (’Latitude’,
 16  -90,
 17  90,
 18  10
 19  )
 20  ),
 21  8307
 22  ) ;

然后当我在SQL Plus里面运行它时,会报这样的错误:

’SPATIALTEST’,
*3 行出现错误:
ORA-00911: 无效字符

这是为什么呢?本人愚钝,上网查了两个小时,才大概明白了是怎么回事儿,下面看我细细道来~

直引号与弯引号的区别

首先附上找到的参考网页:引号字符种种

简单来说,直引号源于早期计算机字符系统对书写规则的简化,由于目前计算机性能大幅提高,官方上基本不再使用了;但是程序员们因为直引号节约空间的优点和一直以来的习惯的影响,仍旧坚持使用直引号。可能许多编程语言都考虑到了这个问题,对直引号、弯引号都予以识别,但很遗憾,Oracle 11g并没有这种功能。在用于桌面出版的编辑器中,弯引号以及斜引号才足够清晰规范,所以office会默认将直引号替换为弯引号。

这时我出错的原因已经明了:word自动把老师代码中的直引号转为了弯引号,然后我把它直接复制到SQL Plus里,芜湖,完蛋!

如何打出直引号?

据本人鉴定,在命令行中的英文引号默认是直引号,大家大可放心。
在Word里面就比较麻烦了,需要更改一下默认设置,具体操作步骤参考:word中的单引号问题
或者最简单粗暴的方法,找到一个直引号,复制粘贴,可以救急。
改成直引号之后代码也成功运行了:

  1  INSERT  INTO  USER_SDO_GEOM_METADATA  VALUES
  2  (
  3  'SPATIALTEST',
  4  'LOC',
  5  SDO_DIM_ARRAY
  6  (
  7  SDO_DIM_ELEMENT
  8  (
  9  'Longitude',
 10  -180,
 11  180,
 12  10
 13  ),
 14  SDO_DIM_ELEMENT
 15  ('Latitude',
 16  -90,
 17  90,
 18  10
 19  )
 20  ),
 21  8307
 22  ) ;

已创建 1 行。

另附:查资料时发现的一些有趣博客

(其实是解决这个问题的时候资料查歪了哈哈哈)
Oracle中的单引号和双引号
ORA-00904无效标示 ‘列’的解决方法

大概就是这样,我要继续去面向CSDN的编程了
本人水平一般,如有错误,欢迎讨论指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值