我有一个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
语句?如果我不能,我怎样才能达到最终结果?
答案 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')