SQLite列别名

前端之家收集整理的这篇文章主要介绍了SQLite列别名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
前提

我最近在我的代码中的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;
原文链接:https://www.f2er.com/sqlite/822969.html

猜你在找的Sqlite相关文章