Oracle中的直引号和弯引号

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

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

’LONGITUDE’
'LONGITUDE'

话不多说,开始正题~

弯引号的报错

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

  1  INSERT  INTO  USER_SDO_GEOM_METADATA  VALUES2  (3  ’SPATIALTEST’,4  ’LOC’,5  SDO_DIM_ARRAY6  (7  SDO_DIM_ELEMENT8  (9  ’Longitude’,10  -180,11  180,12  1013  ),14  SDO_DIM_ELEMENT15  (’Latitude’,16  -90,17  90,18  1019  )20  ),21  830722  ) ;

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

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

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

直引号与弯引号的区别

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

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

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

如何打出直引号?

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

  1  INSERT  INTO  USER_SDO_GEOM_METADATA  VALUES2  (3  'SPATIALTEST',4  'LOC',5  SDO_DIM_ARRAY6  (7  SDO_DIM_ELEMENT8  (9  'Longitude',10  -180,11  180,12  1013  ),14  SDO_DIM_ELEMENT15  ('Latitude',16  -90,17  90,18  1019  )20  ),21  830722  ) ;已创建 1 行。

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

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

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部