2010-07-28 3 views
0

SQL 서버 테이블의 필드를 조건부로 업데이트해야합니다. 이 필드에는 다양한 상태 유형의 단일 문자 표시기가 필드에 모두 들어 있습니다. 예 : 피보험자는 "I"를, 기타 피보험자는 "O"를, 건강 자격자는 "H"를, 복합체를 함께 사용합니다. 필드에는 아무 것도없고 문자도 전부 포함될 수 있습니다. 예 : "IHO"또는 "HOI"또는 "O"또는 "OI"등. 주어진 한 글자는 필드에 한 번 이상 나타나지 않아야합니다.SQL 업데이트 문과 함께 조건 텍스트 필드 문자 삽입

응용 프로그램은 고유 한 ID를 기반으로 레코드 세트를 실행하고 레코드의 고유 ID가 있으면이 필드 만 업데이트합니다. 단일 SQL Update 문에서 다음과 같은 작업을 수행 할 수 있습니까?

"이 필드에 이미 'I'가 포함되어 있으면 아무것도하지 말고, 그렇지 않으면 기존 필드에 'I'를 추가하십시오 편지 세트. "

... 그런 경우 (물론) 그 Update 문은 어떻게 생겼을까요?

저는 SQL 전문가 (분명히)와 거리가 멀기 때문에 친절하십시오. :)이 작동하지만 하나의 열에서 여러 값을 저장하는 기본 설계의 문제를 해결하지 않는

답변

4

뭔가

UPDATE MyTable 
SET StatusTypes= StatusTypes+ 'I' 
WHERE UniqueID=5 
AND CHARINDEX('I', StatusTypes)=0 
+1

처럼. 고객 (?)과 상태 간에는 1 : N 관계가있는 것 같으므로 상태에 대한 두 번째 테이블을 추가하여 디자인을 수정하는 것이 좋습니다. 즉, 쿼리하기 쉽고 새 상태를 더 쉽게 추가 할 수 있으며 성능이 향상 될 수 있습니다. – Pondlife

+0

내 생각은 정확하게. 위와 같은 쿼리를 사용하면 데이터를 다른 테이블로 끌어와 정규화 할 수 있습니다. ' INSERT INTO WidgetStatus (WidgetID, Status) SELECT UniqueID,'From MyTable WHERE CHARINDEX ('I', StatusTypes)> 0 – SteveCav

+0

Ponlife와 SteveCav - 전적으로 동의하지만 내 DB가 아닙니다. 그것은 변경할 수없는 수직적 인 앱이며 쓰기/통합이 필요합니다. – Jamo

관련 문제