데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
문자열 치환에서
replace('aabbcc', 'bbcc', 'd')
위에 처럼 하면 값이 'aad'로 치환이 되는 것을 알고 있습니다.
하지만 제가 궁금한것은 이렇게 'bbcc'로 정해져 있는 경우 말고
'b'뒤로부터는 모두 잘려서 'd'로 변화게 하고 싶습니다.
예를 들어
A테이블
B필드
데이터 값이
aabbcc
abbbcc
acbbcc
이렇게 동일한 데이터가 있으면
update A set B = replace(B, 'bbcc', 'd')
이렇게 모든 데이터가 'aad','abd','acd'로 치환이 되는데
만약 데이터 값이
aabbcc
11abbca
babbac
ababbac
이런 경우 B필드에 데이터 값이 'bb'뒤로 부터
한번에 치환이 되어 'aad','11ad','bad','abad'값이 될수 있는 쿼리 부탁드립니다.
참고로 sql2000입니다.
Comment 3
-
처리짱
2014.02.21 17:22
-
이스트럭(강동운)
2014.02.21 18:06
처리짱님 안녕하세요 ^^;; 태클은 아닙니다만;; '' 부분이 @a가 되야하지 않을까 싶어서요 ~^^;;
감사합니다~~
DECLARE @A NVARCHAR(20)
SET @A = 'aaffcc'
SELECT CASE WHEN CHARINDEX('bb', @a) > 0 THEN
LEFT(@A, CHARINDEX('bb', @a) - 1) + 'd' ELSE
@a
END
-
한태
2016.03.16 18:30
create table bcut(bbb varchar(10))insert into bcut values ('aabbcc'),('11abbca'),('babbac'),('ababbac'),('aabcc')select case when charindex('bb',bbb)>0 then SUBSTRING(bbb,1,CHARINDEX('bb',bbb)-1) + 'd'else bbb endfrom bcut
DECLARE @A NVARCHAR(20)
SET @A = 'aabbcc'
SELECT CASE WHEN CHARINDEX('bb', @a) > 0 THEN
LEFT(@A, CHARINDEX('bb', @a) - 1) + 'd' ELSE
''
END