SQL 공백 문자 처리 완벽 가이드

MySQL, MSSQL, Oracle, PostgreSQL에서 공백 문자를 제거하는 방법을 알아보세요.

MySQL 공백 처리

TRIM 함수:

-- 앞뒤 공백 제거
SELECT TRIM('  안녕하세요  ') AS result;
-- 결과: '안녕하세요'

-- 앞 공백만 제거
SELECT LTRIM('  안녕하세요') AS result;
-- 결과: '안녕하세요'

-- 뒤 공백만 제거
SELECT RTRIM('안녕하세요  ') AS result;
-- 결과: '안녕하세요'

-- REPLACE로 모든 공백 제거
SELECT REPLACE('안녕 하세요', ' ', '') AS result;
-- 결과: '안녕하세요'

MySQL 특수 기능:

  • TRIM은 기본적으로 앞뒤 공백만 제거합니다
  • REPLACE 함수로 모든 공백을 제거할 수 있습니다
  • REGEXP_REPLACE를 사용하여 정규식으로 공백을 제거할 수 있습니다 (MySQL 8.0+)

MSSQL 공백 처리

TRIM 함수:

-- 앞뒤 공백 제거 (SQL Server 2017+)
SELECT TRIM('  안녕하세요  ') AS result;
-- 결과: '안녕하세요'

-- 이전 버전에서는 LTRIM + RTRIM 사용
SELECT LTRIM(RTRIM('  안녕하세요  ')) AS result;

-- REPLACE로 모든 공백 제거
SELECT REPLACE('안녕 하세요', ' ', '') AS result;
-- 결과: '안녕하세요'

MSSQL 특수 기능:

  • SQL Server 2017 이상에서 TRIM 함수 지원
  • 이전 버전은 LTRIM과 RTRIM을 조합하여 사용
  • REPLACE 함수로 특정 문자 제거 가능

Oracle 공백 처리

TRIM 함수:

-- 앞뒤 공백 제거
SELECT TRIM('  안녕하세요  ') AS result FROM DUAL;
-- 결과: '안녕하세요'

-- 앞 공백만 제거
SELECT LTRIM('  안녕하세요') AS result FROM DUAL;

-- 뒤 공백만 제거
SELECT RTRIM('안녕하세요  ') AS result FROM DUAL;

-- REPLACE로 모든 공백 제거
SELECT REPLACE('안녕 하세요', ' ', '') AS result FROM DUAL;
-- 결과: '안녕하세요'

-- REGEXP_REPLACE로 정규식 사용
SELECT REGEXP_REPLACE('안녕  하세요', '\s+', ' ') AS result FROM DUAL;
-- 결과: '안녕 하세요' (여러 공백을 하나로)

Oracle 특수 기능:

  • REGEXP_REPLACE를 사용하여 정규식으로 공백 처리 가능
  • TRIM은 기본적으로 앞뒤 공백만 제거
  • REPLACE로 특정 문자 제거 가능

PostgreSQL 공백 처리

TRIM 함수:

-- 앞뒤 공백 제거
SELECT TRIM('  안녕하세요  ') AS result;
-- 결과: '안녕하세요'

-- 앞 공백만 제거
SELECT LTRIM('  안녕하세요') AS result;

-- 뒤 공백만 제거
SELECT RTRIM('안녕하세요  ') AS result;

-- REPLACE로 모든 공백 제거
SELECT REPLACE('안녕 하세요', ' ', '') AS result;
-- 결과: '안녕하세요'

-- REGEXP_REPLACE로 정규식 사용
SELECT REGEXP_REPLACE('안녕  하세요', '\s+', ' ', 'g') AS result;
-- 결과: '안녕 하세요'

PostgreSQL 특수 기능:

  • REGEXP_REPLACE를 사용하여 정규식으로 공백 처리 가능
  • 'g' 플래그로 모든 매칭 항목 교체
  • TRIM은 기본적으로 앞뒤 공백만 제거

공통 패턴 및 팁

UPDATE 문에서 공백 제거:

-- MySQL
UPDATE table_name SET column_name = TRIM(column_name);

-- MSSQL
UPDATE table_name SET column_name = LTRIM(RTRIM(column_name));

-- Oracle
UPDATE table_name SET column_name = TRIM(column_name);

-- PostgreSQL
UPDATE table_name SET column_name = TRIM(column_name);

WHERE 절에서 공백 체크:

-- 공백만 있는 값 찾기
SELECT * FROM table_name 
WHERE TRIM(column_name) = '';

-- 공백이 있는 값 찾기
SELECT * FROM table_name 
WHERE column_name LIKE '% %';

-- 공백이 없는 값 찾기
SELECT * FROM table_name 
WHERE column_name NOT LIKE '% %';

자주 묻는 질문 (FAQ)

Q: MySQL에서 공백 체크는 어떻게 하나요?

A: TRIM 함수를 사용하여 공백을 제거한 후 빈 문자열과 비교하거나, LENGTH 함수를 사용하여 길이를 확인할 수 있습니다.

Q: MSSQL에서 ISNULL과 공백을 함께 체크하려면?

A: ISNULL(TRIM(column_name), '') = ''또는 LEN(TRIM(ISNULL(column_name, ''))) = 0를 사용하세요.