DB + SQL

[SQL] - SQL 공백제거, 문자제거, 문자열 치환 (trim , replace 함수)

dev_SiWoo 2020. 8. 21. 12:52

SQL을 사용해서 데이터를 다룰 때 공백과 관련된 문제가 발생할 수 있는데

이때 공백을 제거하는 함수로 TRIM 함수를 이용할 수 있다.

1
2
3
4
SELECT CONCAT('     abcd    ''--') AS a # 공백이 있는 상태
SELECT CONCAT(TRIM('      abcd     '), '--') AS a # trim 함수로 공백제거상태
SELECT CONCAT(LTRIM('      abcd     '), '--') AS a # 왼쪽 공백제거
SELECT CONCAT(RTRIM('      abcd     '), '--') AS a # 오른쪽 공백제거
cs

 

 

TRIM 함수는 공백만이 아니라 특정 문자열을 지정해서 지정한 문자열을 제거하는데 사용할 수 있다.

1
2
3
4
5
6
7
0001234000 : 양쪽 0을 제거
SELECT TRIM(BOTH '0' FROM '000012340000')
 
# 왼쪽 문자열만 제거
SELECT TRIM(LEADING '#' FROM '####1234####')
# 오른쪽 문자열만 제거
SELECT TRIM(TRAILING '#' FROM '####1234####')
cs

 

 

 

특정 문자열을 다른 문자열로 바꿀 필요가 있는 상황일 때 replace 함수를 통해 해결 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
# 뮨자열 치환
# replace(컬렴명, 문자열1, 문자열2) : 문자열1 -> 문자열2로 치환
 
SELECT REPLACE('###1234###''#''0')
 
# 모든 공백을 치환을 이용하여 제거
SELECT REPLACE(' 대 한 민 국 '' ''')
SELECT REPLACE(' 대     한     민     국 '' ''') # 탭도 공백으로 규정
 
# 학생이름의 성을 *으로 치환하여 출력하라 
SELECT REPLACE(NAME, SUBSTR(NAME,1,1), '*'FROM student;
cs