2017-04-13 5 views
1

두 조건에 따라 테이블을 업데이트하려는 SQL 스크립트가 있습니다. Fax가 Null 인 경우 나는 그것이 이미 "N/A"가되도록하고 싶습니다. 두 번째 조건은 내가 어떻게 만나야할지 모르겠다. 두 번째 조건은 해당 팩스의 마지막 네 자리 만 표시 할 팩스 번호가있는 경우입니다.두 조건이있는 테이블 업데이트

내 코드는 지금까지 내가이 갱신 또는 하나의 업데이트에 대한 Set 문을 가질 수있는 방법

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 

것입니까? 할 수 없다면 최종 결과는 어떻게 얻을 수 있습니까? SQL 서버에 대한

+0

어느 데이터베이스입니까? – Rams

답변

1

: 팩스 null'N/A'을 반환 coalesce() 내에서 팩스 번호의 마지막 네 문자를 얻을 수 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')