Mysql 공백제거 - mysql gongbaegjegeo

15 Mar 2021 in Data on SQL

(SQL) 칼럼 연결하기 , 공백제거하기.

(SQL) 칼럼 연결하기 (CONCAT ), 공백 제거하기 ( TRIM, RTRIM, LTRIM )


  • 회사명과 회사 위치를 함께 출력하고 싶지만, 두 정보가 서로 다른 테이블 열에 저장되어 있다.

  • 시,도, 우편번호는 서로 다른 열에 저장되어 있지만, 배송지 주소를 인쇄하는 응용 프로그램에서는 하나의 필드로 가져와야 한다.

    Mysql 공백제거 - mysql gongbaegjegeo

위 두 상황을 해결하기 위해서는 칼럼을 서로 연결해줘야 한다.
칼럼을 연결할 때 사용하는 함수인 Concat, || 에 대해 알아보자.

추가로, 칼럼의 공백을 제거해주는 함수인 TRIM에 대해서도 살펴보자.

✋🏾 <손에 잡히는 10분 SQL _ 인사이트> 교재를 참고해 작성한 포스팅입니다.

✋🏾 샘플데이터 다운로드 링크


1. 칼럼 연결하기 : CONCAT, ||



칼럼을 연결하는 문법은 사용하는 DBMS에 따라 다르다.

MYSQL과 MariaDB의 경우, CONCAT 함수를 이용하여 칼럼을 연결해준다.

SELECT CONCAT(vend_name,'(' , vend_country,')') AS vend_total
FROM Vendors



CONTCAT함수는 괄호안에, 연결하고자 하는 칼럼, 문자를 넣어주면 된다.

위 코드의 경우 , vend_name 칼럼과 vend_country 칼럼을 연결해준다.
추가로, 소괄호를 함수안에 삽입해 vend_country를 괄호로 감싼 것을 알 수 있다.

Mysql 공백제거 - mysql gongbaegjegeo


위 표와 같이 vend_name, vend_country과 연결되어 출력된다.

PostgreSql은 칼럼을 연결하기 위해 || 문법을 사용한다.

SELECT vend_name || '(' || vend_country || ')' AS vend_total
FROM Vendors



연결하고자 하는 대상 사이에 || 를 넣어주면 된다.
( CONCAT 함수보다 더 간단하고 직관적인 느낌이다)


2. 공백제거하기 : TRIM, RTRIM, LTRIM



칼럼을 서로 연결하다 보면 공백문자가 사이에 채워져 있는 경우가 많다.

연결하자하는 레코드 자체에 공백이 포함되어 있어 나타나는 현상이다.

대부분의 DBMS는 열 길이에 맞춰 텍스트를 저장하기 때문에
공백도 하나의 문자로 취급한다.

그러나 문제는 공백은 눈에 잘 띄지 않는다는 점이다.

따라서,공백을 고려하지 않고 데이터를 처리한다면
향후에 데이터 검색이나 계산시 문제가 발생할 수 있다.

다행히도 많은 DBMS가 공백제거 함수를 제공한다.


TRIM ( ) , RTRIM( ) , LTRIM ( ) 함수를 이용하면 레코드의
공백을 제거 할 수 있다.

함수명에서 눈치챈 사람도 있겠지만, 세 함수의 차이는 아래와 같다.

  • TRIM ( ) : 양쪽에 있는 공백 제거

  • LTRIM ( ) : 왼쪽에 있는 공백 제거

  • RTRIM( ) : 오른쪽에 있는 공백 제거

다음 코드는 공백을 제거하여 칼럼을 연결하는 코드이다.

SELECT CONCAT(RTRIM(vend_name),'(',RTRIM(vend_country),')')
FROM Vendors
ORDER BY vend_name; -- MYSQL
     
     
SELECT RTRIM(vend_name) || '(' || RTRIM(vend_country) || ')'
  FROM Vendors
  ORDER BY vend_name; -- Postgresql 

REPLACE 함수 사용법

 REPLACE 함수는 다양한 용도로 쓸 수 있다. 보통 사용하는 목적은 문자열을 대체하려고 하지만 공백을 제거할 때에도 주로 사용이된다.

 공백을 제거할 시 TRIM 함수를 이용하여도 좋지만 중간 공백도 지워야 될 경우 주로 REPLACE 를 사용한다.

 > TRIM함수 알아보기

REPLACE('문자열', '치환할 문자열', '대체할 문자열')

 사용 방법은 간단하다. 

 변환할 문자열, 치환할 문자열, 대체할 문자열만 넣어주면 된다.

 

 두 번째 예제에 대해 간단히 설명을 더 드리자면 현재 문자열은 중간중간 공백이 들어가있다. 공백을 지우기 위해 치환할 문자열에 공백(한칸 뛰기) 그리고 대체할 문자열에 값을 넣지 않으면 공백이 모두 지워지게 된다.

↓ 공감 을 눌러주시면 블로거에게 큰 힘이 됩니다 !


Mysql 공백제거 - mysql gongbaegjegeo

SkyBaby

부부가 운영하는 정보 공유 공간입니다. 다양한 일상, 요리, 맛집탐방, 게임, 공부 등의 정보를 담고 있습니다.

Tag mssql replace, mysql replace, oracle replace, replace 공백제거, replace 사용방법, Replace함수, replace함수 사용방법, SQL, sql replace, sql 문자열치환, 공백제거, 문자대체, 문자열대체, 문자열치환, 전체공백제거, 중간공백제거

TRIM 함수는 앞, 뒤 공백을 제거하며 임의 문자를 제거할 수 있습니다. 


SELECT TIRM(str);

#ex.1)
 mysql> SELECT TRIM(' bar ');
      -> 'bar'

식별자 LEADING 를 사용하면, 좌측 공백만 제거됩니다.

#ex.2)
 mysql> SELECT TRIM(LEADING FROM ' bar ');
      -> 'bar '

LTRIM 함수도 동일하게 좌측 공백만 제거합니다.

#ex.3)
 mysql> SELECT LTRIM(' bar ');
      -> 'bar '

식별자 TRAILING 은 우측 공백을 제거합니다.

#ex.4)
 mysql> SELECT TRIM(TRAILING FROM ' bar ');
      -> ' bar'

RTRIM 함수도 동일한 기능을 합니다.

#ex.5)
 mysql> SELECT RTRIM(' bar ');
      -> ' bar'

다음은 임의 문자, 우측 'x' 문자열만 제거합니다.

#ex.6)
 mysql> SELECT TRIM(TRAILING 'x' FROM 'xxxbarxxx');
      -> 'xxxbar'

#ex.7)
 mysql> SELECT TRIM(TRAILING 'xyz' FROM 'xxxbarxxyz');
      -> 'xxxbarx'

다음은 식별자 BOTH 를 이용하여 앞, 뒤 문자열을 제거합니다.

#ex.8)
 mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
      -> 'bar'