2017-12-14 12 views
0

삽입에서 값의 조합을 확인해야합니다. 존재하지 않으면 기본값으로 None으로 설정해야합니다. 처음 6 자만 가져옵니다. 어떻게 구문을 포맷합니까? SQL 서버 2008r변환 및 유효성 검사 열에 삽입

Psuedocode

Insert Into Changes 
Release Information 

Select 
length(6, release info) 
If Employer or EMPLYR, use EMPLYR 
If Family, use OFAM 
If FATHER use FATHER 
If Friend, use OTHER 
If Guardian or GUARDN, use GUARDN 
If MOTHER, use MOTHER 
If NONE, use NONE 
If OFAM use OFAM 
If OTHER, use OTHER 
If PARENT OR Parents, use PARENT 
If RESTR, use RESTR 
If Sister, use OFAM 
If Spouse, use Spouse 
Else If not Valid (none of the above), use None 
If Null use NROF 

From Contacts 
+0

CASE 표현식을 조사해야합니다. 그리고 LEFT를보십시오. –

답변

1

아마도 당신이 여기에 필요한 것은 긴 CASE 식입니다

SELECT 
    CASE WHEN LEFT([release info], 6) IN ('Employer', 'EMPLYR') THEN 'EMPLYR' 
     WHEN LEFT([release info], 6) IN ('Family', 'Sister', 'OFAM') THEN 'OFAM' 
     WHEN LEFT([release info], 6) = 'FATHER' THEN 'FATHER' 
     WHEN LEFT([release info], 6) IN ('Friend', 'OTHER') THEN 'OTHER' 
     WHEN LEFT([release info], 6) IN ('Guardian', 'GUARDN') THEN 'GUARDN' 
     WHEN LEFT([release info], 6) = 'MOTHER' THEN 'MOTHER' 
     WHEN LEFT([release info], 6) IN ('PARENT', 'Parents') THEN 'PARENT' 
     WHEN LEFT([release info], 6) = 'RESTR' THEN 'RESTR' 
     WHEN LEFT([release info], 6) = 'Spouse' THEN 'Spouse' 
     WHEN [release info] IS NULL THEN 'NROF' 
     ELSE 'NONE' END AS relationship 
FROM Contacts; 

참고 : 값의 두가, 매핑 할 EmployerGuardian이 있습니다 실제로 더 길이가 6 자 이상이어야합니다. 이것이 오타 (typo)인지는 모르겠지만 어떤 경우 든 위의 논리는 내 CASE 표현식이 가장 왼쪽 6 자만 캡처하므로이 두 가지 경우에 실패합니다. 이 문제를 해결하기 위해 처음 6 자와 일치 시키거나 긴 하위 문자열을 사용할 수 있습니다.

+0

ahh brilliant !, 그게 효과가있는 것 같습니다. – ERPISE

+0

좋아요,하지만 매핑되는 두 개의 키 (고용주 및 보호자)는 실제로 _eight_ 자 길이입니다. –

+0

나는 WHEN [release info] IS NULL THEN 'NROF'대신 WHEN LEFT ([release info], 6)가 NULL 인 것을 사용하려고한다. 'Left()'를 사용하면 의미가 변경되지 않고 소스 코드에서 정렬 만 유지됩니다. – HABO