簡體   English   中英

SQL插入查詢缺少列和無效的列名

[英]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。

參考這個線程:

如何在SQL表中插入默認值?

希望能幫助到你,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM