2017-04-13 28 views
1

2つの条件に基づいてテーブルを更新するSQLスクリプトがあります。もしFaxがNullなら、私はすでに自分のコードで "N/A"にしておきたいです。 2番目の条件は、私はどのように会うか分からない。 2番目の条件は、そのファックスの最後の4桁のみを表示するファックス番号がある場合です。2つの条件でテーブルを更新

私のコードは、これまで

Update Supp_copy 
Set Fax = 'N/A' 
Output 
Inserted.SupplierID, 
Inserted.Country, 
DELETED.Fax as 'Fax before update', 
INSERTED.Fax as 'Fax after update' 
From Supp_copy 
Where Fax is NULL 

私の予想出力はどのように私は1回の更新のための2つの更新やSetステートメントを持つことができます

SupplierID Country  Fax before update Fax after update 
---------- -------- ----------------- ---------------- 
2   USA   NULL    N/A 
3   USA   (313) 555-3349  3349 
16   USA   NULL    N/A 
19   USA   (617) 555-3389  3389 
25   Canada  NULL    N/A 
29   Canada  (514) 555-2921  2921 

でしょうか?私ができなければ、最終結果をどのように達成できますか? SQL Serverの

+0

どのデータベースですか? – Rams

答えて

1

:ファックスがnullとき'N/A'を返すためにcoalesce()内、ファックス番号の最後の4つの文字を取得するためにright()を使用し

Update Supp_copy 
Set Fax = coalesce(right(fax,4),'N/A') 
output 
Inserted.SupplierID, 
Inserted.Country, 
DELETED.Fax as 'Fax before update', 
INSERTED.Fax as 'Fax after update' 
From Supp_copy 
+0

これは、SETの後でOUTPUTで編集する必要があります。これを答えとしてマークします。ありがとうございました! –

+0

@ I'mhereforWinterHatsおっとり、更新されました。 – SqlZim

1

最後の4桁を取得し、NULL値の関数を結合するためにsubstring_index関数を使用できます。

Update Supp_copy 
Set Fax =coalesce(substring_index(fax,'-',-1),'N/A') 
関連する問題