SQLStory摘录(六)————不可能的错误

来源:互联网 发布:centos traceroute安装 编辑:程序博客网 时间:2024/06/06 07:36
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
 初学SQL的日子,感觉就像是刚学走路,步态可掬,跌跌撞撞。摔了不少可笑的跟头。拿出来大家娱乐一下,也互相提个醒,这样的错我们可以尽量避免的嘛。
先看这个:

例1不合理的逗号:

SelectField1,Field2,Field3,FromMyTable

一执行就是个语法错误,什么意思嘛,这可是从书上抄的哎,你不能这么对我……呵呵呵,其实嘛,错误在于我在最后一个字段名后面加了一个逗号。逗号是分隔字段名或表名的嘛,字段名和Form之间加个逗号算什么事?不要小看它,即使老手,也常出这个错,往往是因为这种情况:我们写了一个

SelectField1,

Field2,

Field3

FromMyTable

……

然后调试过程中,我们可能会增删一些字段,尤其是在From关键字前面增删字段时,常会搞出事来,忘了看是不是字段间都由逗号分隔并且没有多余的逗号,常见是:

SelectField1,

Field2,

FromMyTable

……

或者

SelectField1,

Field2,

Field3

Field4

FromMyTable

……

Field3和Field4之间应有的逗号不见了,要是你写的是“Select……Field3as“XXX”Field4……”还好,系统会马上发现这里有错,不让你通过语法检查。如果是像前面那样写就惨了,系统会以为这是你给Field3起的别名哪,它会老老实实地输出:

Field1Field2Field4

------------------------

…………………………

像我这样的大马虎很可能会因为“没有错”就这样过去了,或者很奇怪地找“我的Field3那里去了”?其实不见了的是Field4……

MCDBA教材中的SQL采用了一种写法,初看很奇怪,却能很有效地防止这类错误

SelectField1

,Field2

,Field3

FromMyTable

……

第一个字段前面有Select关键字,其它的字段前面全有逗号。这种写法不符合英语的风格,不过朋友们可以试试,当你选中某一个字段(单行),或某几字段(多行),拖动它们,剪切、粘贴,修改,几乎不会导致逗号错误。因为一般人的习惯,调试过程中最常改的就是最后几个字段。用这种写法,总能保证From和它前面的字段之间没有逗号,而每个段之间都有逗号。当然Select和第一个字段之间有逗号这种错误我也犯过(我犯过的错太多了),不过我的经验是这种错误很容易就会被发现,不像前面提的那两种那么隐蔽。当然它真的看起起来不顺,所以我到现在也总想不起这么写,所以我到现在还是会有时犯这个逗号错误。值不值得,请读者自己选择吧。

例2语言问题:

看看这一句,居然也有错?

SelectField1,

Field2,

Field3

FromMyTable

是的,所有的逗号各就各位,而且这个语句如此简单,实在没什么可犯错的地方啊?其实……Field2后面的那个逗号是不是有点怪怪的?对了,它是个中文逗号,引擎可不认识它。在别的场合里,可能犯这种错的机会还少一点,由于我们在数据库中大量的要和中文信息打交道,就会经常遇到这种事。不只是逗号,有时我们可能写一些中文的别名,所以用来标识它的双引号也有错写成中文的危险。在这方面,没什么特别的技巧,如果你只用这台机器写代码,不妨把中文输入法设成英语标点(我绝不会,因为要写文章),还有就是一定要用半角数字,用全角数字写算式,系统可认不出来。

给大家一个比较过分的中文错误

Select Field1,

Field2,

Field3+1,

   Field4as“中文字段名”

FromMytable

看看,中英文混排是不是挺可怕的?

“Form”错误

这个比较简单,就不举例了,就是一个拼写错误。如果评SQL语言中最容易写错的关键字,From一定位居榜首。For和Form都是英语中很常见的单词。我相信像我这样一写顺了就把From写成Form的肯定还有。如果是在Microsoft的查询分析器或InterBase的ISQL中,还比容易发现,因为From会被加粗或加蓝。不过我们经常要在客户端程序代码中嵌入SQL(比如),那时就比较容易出这个错了。就在今天白天写程序时,我还在脚本中把一个“Form”写成了“From”,这回光想着SQL,又给写反了。对此真的没什么好办法,小心再小心吧。

影子杀手——NULL值1<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击