SQL Server 2016부터 사용 가능
STRING_SPLIT(“문자열“, ”구분자“)
만약 apple, tomato, orange 를 ,기준으로 SPLIT 하면 총 3개의 row가 나옵니다.
| No | fruit |
|---|---|
| 1 | apple |
| 2 | tomato |
| 3 | orange |
REPLACE(‘문자열’, ‘찾을 문자열’, ‘치환 문자열’)
치환할 때는 대소문자 구분없이 모두 치환합니다.
SELECT REPLACE(‘Microsoft SQL Server’, ‘MICROSOFT’, ‘MS’)
=> MS SQL Server
대소문자 구분하여 치환할 경우 Korean_Wansung_CS_AS옵션을 사용해야합니다.
SELECT REPLACE(‘Microsoft SQL Server’, COLLATE Korean_Wansung_CS_AS, ‘MICROSOFT’, ‘MS’)
=> Microsoft SQL Server
STUFF(‘문자열‘, ’치환 시작위치‘, ’치환문자열 길이‘, ’치환문자열‘)
특정 위치의 문자열을 치환하고 싶은 경우 사용하며,이름 또는 전화번호 등 개인정보를 식별하지 못하도록 마스킹 처리 할 떄 주로 사용됩니다.
SELECT STUFF(‘오렌지’, 2, 1, ‘0’)
=> 오0지
TRANSLATE(‘문자열‘, ’찾을문자 리스트‘, ’치환문자 리스트‘)
찾을 문자열과 치환문자가 통째로 문자열로 인식하는 것이 아니라 순서대로 1:1 매핑으로 인식되어 문자가 치환됩니다.
여러 개의 문자를 각각 다른 문자로 치환하고 싶은 경우 많이 사용합니다.
REPLACE 함수를 사용하면 중첩해야할 경우도 TRANSLATE를 사용하면 쿼리가 훨씬 간결해집니다.
SELECT TRANSLATE('Microsoft SQL Server', 'SQL', 'ⓢⓠⓛ')
=> Microⓢoft ⓢⓠⓛ ⓢerver
감사 대비를 위해 사용자테스트 관련 데이터 추출을 하는 과정에서 text 형식으로 가지고 있는 테스트 번호들을 STRING_SPLIT()을 이용해 구분하고 싶었다.
2012년도 버전을 사용하고 있어 STRING_SPLIT()함수가 사용 불가능해서 추출하기 매우 힘들었다.
도중에 데이터 추출이 취소되어서 더이상 진행하지 않았다.