도시, 주 및 우편 번호를 포함하는 테이블 열이 있습니다. 나는 이것을 3 가지로 나누고 싶다.분할 도시, 주, 하나의 열에서 3 별도로 우편 번호, 또한 9 자리 우편 번호에 대시를 추가하십시오.
나는 이것이 잘못된 것인지 궁금해하고있다. 다음은 모두 추출하는 시도입니다.
SELECT [City State Zip]
,CHARINDEX(',',[City State Zip]) AS [Comma location]
,SUBSTRING([City State Zip],CHARINDEX(',',[City State Zip]),13) AS [State and Zip]
,SUBSTRING(SUBSTRING([City State Zip],CHARINDEX(',',[City State Zip]),13),5,9)
-- Below code attempts to add a dash to the 9 digit zip codes but appears to only be doing it to some of them
CASE LEN(SUBSTRING(SUBSTRING([City State Zip],CHARINDEX(',',[City State Zip]),13),5,9))
WHEN 9
THEN
STUFF((SUBSTRING(SUBSTRING([City State Zip],CHARINDEX(',',[City State Zip]),13),5,9)
ELSE
(SUBSTRING(SUBSTRING([City State Zip],CHARINDEX(',',[City State Zip]),13),5,9)
END AS Zip
,SUBSTRING([City State Zip],0,CHARINDEX(',',[City State Zip])) AS City
-- This code for extracting the STATE is producing an error "Invalid length parameter passed to the SUBSTRING function"
,SUBSTRING([City State Zip],CHARINDEX(',',[City State Zip])+1,LEN([City State Zip])- (CHARINDEX(',',[City State Zip])+1 + 5))
FROM dbo.foo
이제 상태를 어떻게 추출합니까? 현재 "SUBSTRING 함수에 전달 된 길이가 잘못된 매개 변수"와 함께 실패합니다.
도시에는 항상 쉼표가 따라 오며 상태는 항상 2 자리입니다.
샘플 데이터 아래 :
조지 타운, DE 19947
그린 우드, DE 199502039
도버, DE 19901
뉴 캐슬, DE 197205069
루이스, DE 199581984
뉴 워크, 독일 197118734
서머나, DE 19904
볼티모어, MD 21020
도버, DE 19901
을 도시는 folowed되지 않습니다 혼수 상태로 표출 함 :) – PeterRing
고맙습니다. 샘플 데이터를 수정했습니다. –