如果表没有列名,如何让SQL没有崩溃?

时间:2018-02-23 03:58:07

标签: sql sql-server

我有很多table.e.g。:tableName1,tableName2 ...,tableNameN

某些表的columnNames名为“ID”,“D1”,“D2”。

某些表只有名为“ID”,“D1”的列名。

如果运行下面的sql:

SELECT D1,D2 FROM tableName1
SELECT D1,D2 FROM tableName2
SELECT D1,D2 FROM tableName3
...
SELECT D1,D2 FROM tableNameN

因为某些表没有'D2'列,所以它会在某些表sql中崩溃。

它会显示'无效的列名“D2”'

如果表没有列名,如何让SQL没有崩溃?

我希望如果表没有'D2',则sql结果的列值是我指定的默认值。

高级问题:

如果表没有我想要的多个列。

某些表的columnNames名为“ID”,“D1”,“D2”,“D3”。

某些表只有名为“ID”,“D1”的列名。

我在下面试试这个,它正在发挥作用。

select t.* 
from (select NULL as D2,NULL as D3) x cross apply
     (select D2,D3
      from t
     ) t

1 个答案:

答案 0 :(得分:2)

使这项工作有一个技巧:

select t.* 
from (select NULL as d2) x cross apply
     (select d1, d2
      from t
     ) t

如果d2位于t,则它将解析为t.d2。否则,它将解析为x.d2

这是使用合格列名称的唯一情况。