MS SQL 2000 Replace
문제 1.
id (int)
subject (varchar(250)
content (text)
구조를 가지고 있는 diamondwind 라는 테이블이 있다고 하자.
여기서 content 안에 있는 단어중에 ‘green tea’를 ‘green tea latte’로 바꾸어야 할때 (물론 들어있지 않은 row가 있을 수 있다.)
스크립트 언어를 쓰지 않고 T-SQL만 가지고 해결 할 수 있는 방법은 뭐가 있을까?
참고로 text 타입에서는 replace가 되지 않는다.
내머리에서 나올 수 있는 가장 최선의 방법.
substring으로 문자열을 잘라내서 replace 한뒤에, 나머지 문자열과 합친다.
update diamondwind set
content = replace(substring(content, 0, patinext(‘%green tea%’, content)+len(‘green tea’)), ‘green tea’, ‘green tea latte’) +
substring(content, patinext(‘%green tea%’, content)+len(‘green tea’), datalength(content))
wherer content like ‘%green tea%’
- 여기서 생기는 문제 하나는 한 row 안에 ‘green tea’가 여러 번 들어 있을 경우 제대로 처리가 되지 않는다.
- 생기는 문제 둘. substring의 한계는 char와 같은 8000자다. 즉 8000자 이상이 될 경우 제대로 돌아가지 않는다. 현재는 Stored Producure를 쓰는게 가장 나을 듯 하다.
더 나은 방법이 있을까나.
Tags:
폽 said,
January 20, 2006 @ 6:19 pm
이게...모요. 까만 게 글자인 건 분명한데...흠....나...테크니컬 라이터 맞소?OTL
하루에 said,
February 14, 2006 @ 4:39 pm
테크니컬 라이터가 SQL까지 마스터하면 그게 라이터여? 개발자지.