MSSQL의 문자열 치환 함수는 REPLACE가 매우 유용합니다.
치환 속도와 결과가 괜찮습니다.
특히, 조건문이나 그룹 정렬 문에서 사용하면 참 유용하게 사용이 가능합니다.
아래의 "실전 예제 >>"에서 사용 예를 남겨봅니다.
REPLACE
문자열 치환 - 특정 문자열 값을 바꿔주는 함수 (REPLACE, STUFF)
--문법-- REPLACE('문자열','치환예정문자','치환할문자')
--예시-- REPLACE('ABCDEFG','DEF','XXX') |
--MY_TABLE에서 이름(NM_KOR)을 '이'씨를 '김'씨로 바꿔서 출력-- SELECT REPLACE(NM_KOR,'이','김')AS 사원명 FROM MY_TABLE |
실전 예제 >>
"Event 10% OFF $1.49-$0.15"에서 "10% OFF" 이벤트 이름 갯수 구하기
SELECT ITEM_NAME AS EVENT_NAME
FROM ORDER_DTL
WHERE ITEM_TYPE=5 AND ORDER_STATUS='P' AND ITEM_NAME LIKE ('Event%')
결과 |
EVENT_NAME ... |
다음과 같은 상황에서 있을 때,
GROUP BY에 REPLACE와 LEFT를 사용해서 처리하면 유용합니다.
SELECT REPLACE( LEFT(item_name,CHARINDEX('$', item_name)-1),'Event','') as EVENT_NAME
,count(*) as CNT
FROM ORDER_DTL
WHERE ITEM_TYPE=5 AND ORDER_STATUS='P' and ITEM_NAME LIKE ('Event%')
GROUP BY REPLACE( LEFT(item_name,CHARINDEX('$', item_name)-1),'Event','')
결과 |
EVENT_NAME CNT 10% OFF 112 Fam and Friend 152 |
SSN의 '-'없애는 예제>>
STUFF
지정된 문자열의 시작 위치와 크기를 지정하여 원하는 문자로 치환(STUFF)
--문법-- STUFF('문자열', '시작 위치', '크기', '치환할 문자')
--예시-- STUFF('ABCDEFG',2,3,'XXX') |
--MY_TABLE에서 이름(NM_KOR) 칼럼의(NM_KOR) 이순신을 이성계로 바꿔서 출력-- |
TRANSLATE
TRANSLATE 함수(function)는 SQL Server 2017 이후에 추가되었습니다.
Syntax
TRANSLATE (@InputString, @FromString, @ToString)
Arguments
@InputString - String where the function is applied on, to translate a specified set of characters to another.
@FromString - Character(s) to be searched within @InputString.
@ToString - Replacement character(s).
DECLARE @InputString as VARCHAR(50) = '[#91]7777,7777,77';
SELECT @InputString as BeforeTranslate,
TRANSLATE(@InputString,'[#],','(+)-') as AfterTranslate;
참조:
(Blog) 코딩 팩토리: [MSSQL] 문자열 치환 (REPLACE,STUFF) 사용법 & 예제
(Site) Tech-Recipes: How To Use TRANSLATE Function In SQL Server
'DB관련 > SQL Server' 카테고리의 다른 글
SQL Server 2014 Express 설치하기 (SSMS포함 Window 10 환경) (2) | 2020.12.11 |
---|---|
MSSQL에서 DB, LOG 축소 쿼리 / 공간 줄이기 (0) | 2020.10.15 |
[SQL Server] SQL SERVER 에러로그(ERRORLOG) 삭제하기 - 디스크 정리 (0) | 2020.08.01 |
(중요) MSSQL mdf log파일로 Detach->Atach 하기 (백업,복원) (0) | 2020.02.28 |
Cannot insert explicit value for identity column in table 'table' when IDENTITY_INSERT is set to OFF. (0) | 2019.10.10 |
decimal 와 numeric의 차이 + Money Data Type (C#) (0) | 2019.09.26 |
[MSSQL] SQL Server Management Studio 로 DB copy하기 (0) | 2019.09.24 |
mssql 에서 sa 로그인 실패 오류 해결방법 (0) | 2019.09.19 |
(로그인하지 않으셔도 가능)