아래 열과 같은 문자열이 포함 된 테이블이 있습니다.가변 길이의 하위 문자열
RTSPP_LZ_AEN
RTSPP_LZ_CPS
RTSPP_LZ_HOUSTON
RTSPP_LZ_LCRA
RTSPP_LZ_NORTH
RTSPP_LZ_RAYBN
RTSPP_LZ_SOUTH
RTSPP_LZ_WEST
RTSPP_BTE_CC1
RTSPP_BTE_PUN1
RTSPP_BTE_PUN2
나는 문자열의 끝까지 _
의 두 번째 발생에서 문자열을 얻을 필요하고 당신이 볼 수있는 문자열은 고정 길이 없습니다. 첫 번째 부분은 항상 고정 될 수있는 것은 아니며 변경할 수 있습니다. 지금은 그것을 달성하기 위해 다음 코드를 사용하고 있습니다.
SELECT SUBSTRING([String],CHARINDEX('_',[String],(CHARINDEX('_',[String])+1))+1,100)
FROM [Table]
가변 길이를 처리하기 위해 길이로 임의의 큰 값을 취하고 있습니다. 그것을하는 더 좋은 방법이 있습니까?
항상 정확히 2 개의 밑줄이 있습니까? –
첫 번째 부분은 항상 RTSPP_LZ_입니까 아니면 다른 값을 가질 수 있습니까? –
@AaronBertrand 현재로서는 2 개 이상의 밑줄이있는 사례가 없습니다. 이 경우 문자열의 끝까지 마지막 밑줄이 생길 수 있습니다. 밑줄의 n 번째 발생을 처리 할 수있는 좀 더 일반적인 해결책은 크게 감사 할 것입니다. – Ram