更新表有两个条件

时间:2017-04-13 17:23:25

标签: sql sql-update

我有一个sql脚本,我想根据两个条件更新我的表。如果传真是空的,那么我希望它是" N / A"我已经在我的代码中。第二个条件我不知道如何见面。第二个条件是,如果有传真号码只显示该传真的最后四位数字。

到目前为止,我的代码是

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

我的预期输出是

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

如何为一次更新提供两个更新或Set语句?如果我不能,我怎样才能达到最终结果?

2 个答案:

答案 0 :(得分:1)

for Sql Server:

使用right()获取传真号码的最后四个字符,在传真为coalesce()'N/A'内返回null

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 

答案 1 :(得分:1)

你可以只使用substring_index函数来获取最后4位数,并为空值合并函数。

Update Supp_copy
Set Fax =coalesce(substring_index(fax,'-',-1),'N/A')