科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件软件开发:总是检查空白

软件开发:总是检查空白

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

字符串"hello"并不等同于字符串" hello "。hello前后的小空白并不影响人类的阅读能力,但对字符串比较操作符而言却极为重要。

作者:builder.com.cn 2007年5月25日

关键字: Rex Baldazo 软件开发

  • 评论
  • 分享微博
  • 分享邮件

上个月,Justin讨论了他对基本编程理论资源的探求情况。我经常遇到人们忘记检查空白——或是不知道如何检查空白——的情况。

我记不清有多少次看到某个可怜的工程师用大量时间试图解决一个由额外的空白造成的问题。我不关心你使用哪种程序语言,字符串"hello"并不等同于字符串" hello "。hello前后的小空白并不影响人类的阅读能力,但对字符串比较操作符而言却极为重要。

由于某种原因,我发现保存在数据库字符串中的额外空白是最大的隐患。我认为这种情况经常发生,因为当你用一个TOAD之类的工具查询表时,返回的结果以一个简洁的小型电子表格显示。你一眼很难发现一些数据上是否存在一些额外的空白。

我发现解决这个问题的最简单方法(我经常到处使用它)是用一些特殊的字符,如方括号,将字符串封套起来。这样,如果存在额外的空白,我就能够看到。这些天我主要用Oracle进行开发,因此其语法可能如下所示:

select '[' || keyword || ']' from keyword_table;

将每个关键字用方括号封套起来,那么我一眼就能看到额外的空白。我相信SQL的其它变体也有相似的语法。

如果字符串没有内部空白,你还可以搜索里面包含空格的任何内容——不过这种方法只能发现常规的空格,而遗漏tab之类的字符。而且,由于可能要进行老式的直接表扫描,这个过程可能非常缓慢:

select keyword from keyword_table where keyword like '% %';

无论什么时候,某个工程师来请我帮忙调试,以查明为什么他们的系统不能正确登录数据库,我做的第一件事情就是检查他们所使用的登录证书中的空白。(当然,第二步就是检查证书本身。)我发现,许多时候,错误的空白往往是罪魁祸首。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章