(SQL) 칼럼 연결하기, 공백 제거하기
(CONCAT, TRIM)
(SQL) 칼럼 연결하기 , 공백제거하기.
(SQL) 칼럼 연결하기 (CONCAT ), 공백 제거하기 ( TRIM, RTRIM, LTRIM )
회사명과 회사 위치를 함께 출력하고 싶지만, 두 정보가 서로 다른 테이블 열에 저장되어 있다.
시,도, 우편번호는 서로 다른 열에 저장되어 있지만, 배송지 주소를 인쇄하는 응용 프로그램에서는 하나의 필드로 가져와야 한다.
위 두 상황을 해결하기 위해서는 칼럼을 서로 연결해줘야 한다.
칼럼을 연결할 때 사용하는 함수인 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를 괄호로 감싼 것을 알 수 있다.
위 표와 같이 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