[英]SQL Insert query with missing column and Invalid column name
我正在嘗試運行基本的插入sql查詢。
這是插入sql。
Insert into tblABC( X1,X2,X3)
Select X1,X2,X3 from tblXX
問題是tblXX
沒有X3
列。
有時X3
在那里,有時它會丟失。 如果缺少列,則推送默認值,例如0
。
嘗試使用Case陳述式
CASE WHEN EXISTS (SELECT 1 From information_schema.Columns C
Inner Join Sys.Objects O
On ( O.Object_Id = Object_Id(N'tblXX') And O.Name = C.Table_Name)
and C.Column_Name = 'X3') THEN X3
ELSE 0
END
我在X3列上收到無效的列名錯誤
您可以嘗試以下方法:
if (exists (select 1 from information_schema.columns where table_name = 'tblXX' and column_name = 'X3'))
begin
Insert into tblABC(X1, X2, X3)
Select X1, X2, X3
from tblXX;
end
else
begin
Insert into tblABC(X1, X2, X3)
Select X1, X2, 0
from tblXX;
end;
如果這不起作用(因為if
失敗),則需要訴諸動態SQL。
一個重要的注意事項:如果您要在表中隨機添加和刪除列,那么您的應用程序設計似乎很糟糕。 我建議您通過修復系統的基礎設計來解決此問題,因此無需進行此類工作。
我不確定要查找的內容,如果您只想用表tblABC
中的數據填充表tblXX
,其中第三列沒有值,這是使用默認值的查詢:
INSERT INTO tblABC(X1, X2, X3)
SELECT T.X1
,T.X2
,0
FROM tblXX T
如果您只是想使用tblXX
不存在的默認值,則查詢如下:
INSERT INTO tblABC(X1, X2, X3)
SELECT T.X1
,T.X2
,CASE
WHEN T.X3 IS NULL THEN 0
ELSE T.X3
END
FROM tblXX T
希望這會幫助你。
您可以做的是在創建表時可以在第三列中輸入默認值0,這樣就不必使用if語句。 然后,您可以只指定要插入值的列,或將沒有值的值設置為null。
參考這個線程:
希望能幫助到你,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.