簡體   English   中英

更新表/ T-SQL

[英]Update Table/T-SQL

我有一個5列的表格。 我想基於第1到第4列中的值更新第5列(默認情況下為NULL)。如果第1列為空,則將“ c1”添加到第5列中。如果第2列為空,則將“ c2”添加到第5列中,依此類推。 。 另外,如果第一和第二列為空,我想在第五列添加“ C1,C2”,依此類推。 我該如何實現。

到目前為止,這是我嘗試過的:

UPDATE TABLE 
SET C5 = 
Case 
 when C1 IS NULL then 'C!' 
 WHEN C2 IS NULL then 'C2' 
 WHEN C3 IS NULL THEN 'C3' 
 WHEN C4 IS NULL ThEN 'C4' 
END

我會用這個:

UPDATE table
SET C5 = ISNULL(REPLACE(C1,C1,''),',C1')
          +ISNULL(REPLACE(C2,C2,''),',C2')
          +ISNULL(REPLACE(C3,C3,''),',C3')
          +ISNULL(REPLACE(C4,C4,''),',C4')

等等

這個想法是,您使用REPLACE留空''或NULL ,然后使用ISNULL來添加字段名稱(如果為NULL

您可以很快地在Excel中編寫查詢,它將在字符串的末尾留下一個錯誤的逗號,如果存在問題,可以很容易地解決:

UPDATE table
SET C5 = STUFF(ISNULL(REPLACE(C1,C1,''),',C1 ')
                  +ISNULL(REPLACE(C2,C2,''),',C2 ')
                  +ISNULL(REPLACE(C3,C3,''),',C3 ')
                  +ISNULL(REPLACE(C4,C4,''),',C4 '),1,2,'')

更新:更改為使用STUFF()函數而不是LEFT()來消除錯誤的逗號,並在列出的項目之間添加了一個空格。

UPDATE tbl
SET fifth = CASE
    WHEN first IS NULL AND second IS NULL and third IS NULL and fourth IS NULL THEN "C1, C2, C3, C4"
    WHEN .... -- all 15 cases

我還沒有測試過,但是類似的東西應該可以工作:

update table1 set c5 =
(case when c1 is null then 'C1,' else '' end ||      
 case when c2 is null then 'C2,' else '' end || 
 case when c3 is null then 'C3,' else '' end || 
 case when c4 is null then 'C4' else '' end)

如果需要,我將修剪尾隨逗號的練習留給了精通t-sql字符串操作的人。

UPDATE t SET C5 = 
REPLACE(REPLACE(
  CASE C1 WHEN NULL THEN 'C1' ELSE '' END+'<>'+
  CASE C2 WHEN NULL THEN 'C2' ELSE '' END+'<>'+
  CASE C3 WHEN NULL THEN 'C3' ELSE '' END+'<>'+
  CASE C4 WHEN NULL THEN 'C4' ELSE '' END,
'><',''),'<>',',')

暫無
暫無

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

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