2017-07-16 21 views
1

我有一個從webform中記錄數據並將其插入到表中的插入。我想我的插入讀取先前的插入和查找所有null領域和更新該記錄的null領域與--用於讀取空字段並使用字符串值更新的SQL函數

的數據類型爲我所有領域的字符串爲varchar

後立即運行的更新

我有20 +形式每個有超過100個字段,所以我正在尋找一個功能,將足夠聰明來讀取/更新具有null值的字段,而無需專門列舉/寫出更新語句的每個字段。這隻會花費太長時間。

有誰知道的方式來簡單地讀取該領域具有null值和更新是null爲一個字符串,在我的情況--

+1

插入後您可以嘗試更改表格結構,而不是更新。將列的默認值設置爲'--'。如果插入沒有提供值,則會自動插入'--'。 – Varun

+0

如果你不想要空值,爲什麼不能在插入期間改變這個值 – TheGameiswar

+0

@वरुण這是可以通過SQL Management Studio設置的東西嗎? – UserSN

回答

1

而不是去更新後插入您可以嘗試更改表結構。

將列的默認值設置爲 - 。如果在插入時沒有提供值, - 將自動插入。

2

任何領域,如果你不能改變你現有的代碼,我會去與插入觸發器...所以每次插入後,您可以檢查,看空值和更新它們像下面

create trigger triggername 
on table 
after insert 
as 
begin 

    update t 
    set t.col1=isnull(i.col1,'--'), 
     t.col2=isnull(i.col2,'--') 
    rest of cols 
    from table t 
     join 
     inserted i 
    on i.matchingcol=t.mtachingcol 
    end 

與上述方法的問題是,你必須檢查所有插入的rows..I會只使用這種方法,因爲用許多過濾許多列項條款不利於性能

如果是隻用於顯示目的,我會視

+0

我剛剛發現,當列爲空時,您可以將默認值歸因於似乎是最快的方式,但很高興知道我可以使用觸發器來執行相同的操作。唯一的下降與這是我將不得不枚舉所有我的列在上面的代碼100 + x 20 + foms這是我試圖找到最快的方式的原因。謝謝 – UserSN

+1

好,很高興你找到答案 – TheGameiswar

相關問題