데이터중에 아래와 같은 데이터가 많이 있습니다.
홍길동(2-1)
홍길동(2-2)
김철수(2-1)
김철수(2-2)
홍당무(10-1)
홍당무(10-10).....
이런식으로 입력되어 있는데, 뒷부분은 빠지고 이름만 출력할 수 있는 쿼리문을 알고싶네요..
홍길동, 김철수, 홍당무... 이런식입니다.
아무리생각해봐도 떠오르지가 않네요..
도움주시면 감사하겠습니다..
SELECT SUBSTRING( '홍길동(2-1)', 1, charindex('(', '홍길동(2-1)' ) - 1 )
답변감사드립니다. 말씀하신대로 쿼리문을 넣어서 컬럼을 아래와 같이 넣었습니다.
select SUBSTRING(b_nm,1,CHARINDEX('(',b_nm)-1) from basemback ----b_nm은 컬럼입니다.
위와 같이 실행시키니까 'LEFT 또는 SUBSTRING 함수에 전달된 길이 매개 변수가 잘못되었습니다.'라고 뜨면서 오류가 생깁니다. 혹시 어디가 잘못된건지 알려주시면 감사하겠습니다..
질문에서 보여주셨던 것처럼 모든 이름에 (가 있는 것은 아닌 가 봅니다.
그렇다면
SELECT
CASE WHEN 0 = CHARINDEX('(', b_nm ) THEN
b_nm
ELSE
SUBSTRING( b_nm, 1, CHARINDEX('(', b_nm ) - 1 )
END AS strip_b_nm
;
와 같이 해보세요.
대충
WITH tmp AS (
SELECT x = '홍길동(2-1)' UNION ALL
SELECT x = '홍길동(2-2)' UNION ALL
SELECT x = '김철수(2-1)' UNION ALL
SELECT x = '김철수(2-2)' UNION ALL
SELECT x = '홍당무(10-1)' UNION ALL
SELECT x = '홍당무(10-10)' UNION ALL
SELECT x = '홍xx'
)
ISNULL(PARSENAME(REPLACE(x, '(', '.'), 2) , x)
FROM