일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- PostgreSQL
- mssql
- SQL
- gtihub
- git pat
- macvlan
- codeium
- db종류
- 르세라핌
- JPA
- pat발급
- Python
- 데이터내보내기
- 11월순위
- mysql
- 애널리틱스4
- analytics4
- 티스토리챌린지
- API
- DBMS
- java
- 명령어
- oracle
- IntelliJ
- spring
- ANTIFRAGILE
- docker
- 오블완
- 자바
- Today
- Total
hanker
SQL - 문자열 바꾸기 (MySQL / MSSQL / Oracle / PostgreSQL) 본문
각 DBMS 별로 문자열을 변경하는 방법에 대해서 알아보자!
1. MySQL
문자열 내에서 일치하는 부분을 새 문자열로 바꿔주는 REPLACE 함수
○ REPLACE(문자열, 찾을_문자열, 바꿀_문자열)
SELECT REPLACE('Hanker eeee', 'eeee', '!!!!');
-- 결과: 'Hanker !!!!'
정규 표현식을 통해서 문자열을 치환하는 REGEXP_PLACE 함수
○ REGEXP_REPLACE(문자열, 정규표현식, 바꿀_문자열)
SELECT REGEXP_REPLACE('Hanker123123', '[0-9]+', '');
-- 결과: 'Hanker'
REGEXP_PLACE 함수는 MySQL 8.0 이상에서 사용이 가능하다.
2. MSSQL
문자열 내에서 일치하는 부분을 새 문자열로 바꿔주는 REPLACE 함수
○ REPLACE(문자열, 찾을_문자열, 바꿀_문자열)
SELECT REPLACE('Hanker eeee', 'eeee', '!!!!');
-- 결과: 'Hanker !!!!'
문자열의 일부를 다른 문자열로 대체하는 STUFF 함수
○ STUFF(문자열, 시작위치, 길이, 바꿀_문자열)
SELECT STUFF('Hanker abcdef', 8, 6, 'STUFF');
-- 결과: 'Hanker STUFF'
문자열 내의 개별 문자를 다른 문자로 대체하는 TRANSLATE 함수
○ TRANSLATE(문자열, 찾을_문자들, 바꿀_문자들)
SELECT TRANSLATE('Hanker NICE', 'aer', 'AER');
-- 결과: 'HAnkER NICE'
TRANSLATE() 함수는 MSSQL 2017 이상에서 사용할 수 있다.
3. Oracle
문자열 내에서 일치하는 부분을 새 문자열로 바꿔주는 REPLACE 함수
○ REPLACE(문자열, 찾을_문자열, 바꿀_문자열)
SELECT REPLACE('Hanker ABC', 'ABC', '!!!') FROM dual;
-- 결과: 'Hanker !!!'
정규 표현식을 통해서 문자열을 치환하는 REGEXP_PLACE 함수
○ REGEXP_REPLACE(문자열, 정규표현식, 바꿀_문자열)
SELECT REGEXP_REPLACE('Hanker 123456789', '[0-9]+', '') FROM dual;
-- 결과: 'Hanker'
REGEXP_PLACE 함수는 Oracle 10g 이상에서 사용가능하다.
문자열 내의 개별 문자를 다른 문자로 대체하는 TRANSLATE 함수
○ TRANSLATE(문자열, 찾을_문자들, 바꿀_문자들)
SELECT TRANSLATE('Hanker NICE', 'aer', 'AER') FROM dual;
-- 결과: 'HAnkER NICE'
4. PostgreSQL
문자열 내에서 일치하는 부분을 새 문자열로 바꿔주는 REPLACE 함수
○ REPLACE(문자열, 찾을_문자열, 바꿀_문자열)
SELECT REPLACE('Hanker ABC', 'ABC', '!!!');
-- 결과: 'Hanker !!!'
정규 표현식을 통해서 문자열을 치환하는 REGEXP_PLACE 함수
○ REGEXP_REPLACE(문자열, 정규표현식, 바꿀_문자열)
SELECT REGEXP_REPLACE('Hanker 123456789', '[0-9]+', '');
-- 결과: 'Hanker'
REGEXP_PLACE 함수는 PostgreSQL 8.4 이상에서 사용가능하다.
문자열의 일부를 다른 문자열로 대체해주는 OVERLAY 함수
○ OVERLAY(문자열 PLACING 바꿀_문자열 FROM 시작위치 [FOR 길이])
SELECT OVERLAY('Hanker abcdef' PLACING 'OVERLAY' FROM 8 FOR 6);
-- 결과: 'Hanker OVERLAY'
OVERLAY 함수는 PostgreSQL 9.0 이상에서 사용이 가능하다.
정리
- REPLACE() 함수는 원본 문자열을 수정하지 않고, 변경된 결과를 반환한다.
- 문자열 내의 모든 일치 항목이 새로운 문자열로 치환된다.
- 대소문자를 구분하여 문자열을 찾기 때문에, 대소문자를 무시하고 싶다면 추가적인 함수(예: LOWER() 또는 UPPER())와 결합하여 사용해야 한다.
! 정규식이란 ?
https://hanke-r.tistory.com/entry/%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%B4%EB%9E%80-%EC%A0%95%EA%B7%9C-%ED%91%9C%ED%98%84%EC%8B%9D-Regular-Expression-Regex