加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite列别名

发布时间:2020-12-12 18:51:45 所属栏目:百科 来源:网络整理
导读:前提 我最近在我的代码中的select语句中遇到了一个错误.在我意识到发生了什么之后修复它是相当微不足道的,但是我有兴趣找到一种方法来确保类似的错误不再发生. 以下是违规查询的示例: select the,quick,brown fox,jumped,over,the,lazy,dogfrom table_name;
前提

我最近在我的代码中的select语句中遇到了一个错误.在我意识到发生了什么之后修复它是相当微不足道的,但是我有兴趣找到一种方法来确保类似的错误不再发生.

以下是违规查询的示例:

select
  the,quick,brown
  fox,jumped,over,the,lazy,dog
from table_name;

我的意图是:

select
  the,brown,fox,dog
from table_name;

对于那些看不到它的人来说,前者在褐色之后会丢失一个逗号.这会导致列具有别名,因为不需要as关键字.那么,你得到的结果是:

the,dog

…在名为fox的列中包含所有褐色值.对于像上面这样的简短查询(特别是当每个列具有非常不同的值)时,可以很容易地注意到这一点,但是它出现在一个相当复杂的查询中,其中大部分是整数列,如下所示:

select
  foo,bar,baz,another_table.quux,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,b1,b2,b3,b7,b8,b9,b10,b11,b12,b13,b14,b18,b19,b20,b21,c1,c2,c3,c4,c5,c6,c7,c8
from table_name
join another_table on table_name.foo_id = another_table.id
where
  blah = 'blargh'
-- many other things here
;

即使有更好的列名,值也非常相似.如果我在b11之后错过了一个逗号(例如),然后所有的b11值都被称为b12,那么当我们通过我们的处理管道(这取决于结果中的这些列名)运行数据时,这是非常不幸的.通常情况下,我会从table_name中选择*,但我们需要的是要比我们更具选择性.

我正在寻找的是一种阻止这种情况再次发生的策略.

有没有办法要求别名列?或者写东西以使其产生错误的伎俩? (例如,在类C语言中,我开始编写1 == foo而不是foo == 1,当我意外地遗漏了等号时导致编译错误,使其成为无效的1 = foo而不是foo = 1. )

我正常使用vim,所以我可以使用hlsearch来突出显示逗号,这样我就能看到它.但是,我必须经常在其他环境中编写查询,包括一个专有的界面,我不能轻易地做这样的事情.

谢谢你的帮助!

解决方法

我以前做过的一件事就是把逗号移到行的开头.这可以带来一些好处.首先,您可以立即查看是否有任何逗号丢失.其次,您可以在最后添加新列,而无需修改之前的最后一行.

失踪:

select
  the,dog
from table_name;

不要错过:

select
  the,dog
from table_name;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读