본문 바로가기

Languages/SQL

[SQL] 13. 문자열 연산

728x90
반응형

0. 문자열 연산

문자열끼리 연산하는 연산자는 많지 않다. 문자열을 가공하는 함수 중 자주 사용하는 것을 알아보자.

 

1. 문자열 결합

문자열 결합이란 문자열 데이터를 결합하는 연산이다.

'abc' || '1234' -> 'abc1234'

문자열을 결합하는 연산잔는 데이터베이스마다 방언이 있다. SQL server는 문자열 결합에 + 연산자를 사용한다. 오라클이나 DB2, PostgreSQL에서는 || 연산자를 사용한다. MySQL에서는 CONCAT함수로 문자열을 결합한다.

 

문자열 결합은 보통 2개의 열 데이터를 모아서 1개의 열로 처리하고 싶은 경우에 자주 사용한다. 다음 sample35를 보자.

SELECT CONCAT(quantity,unit) FROM sample35;

unit열은 문자열형이고 quantity열은 INTEGER형이다. CONCAT함수를 통해 두 열을 결합할 수 있다. 문자열 결합이지만 수치 데이터 가능하다. 단 결합한 결과는 문자열형이 도니다. 

 

2. SUBSTRING 함수

SUBSTRING 함수는 문자열의 일부분을 계산해서 반환해주는 함수이다. 데이터베이스에 따라 SUBSTR인 경우도 있다. 

 

문자열에 대해 index로 접근해서 문자열의 일부분을 반환해준다. index의 시작은 1이다.

SUBSTRING('20210722',1,4) -> '2021'

 

 

3. TRIM 함수

TRIM 함수는 문자열의 앞뒤로 여분의 공백이 있을 경우 이를 제거해주는 함수이다. 문자열 중간에 존재하는 공백은 제거되지 않는다. 고정길이 문자열형에 대해 많이 사용한다.

 

CHAR형의 문자열형에서는 문자열의 길이가 고정되며 남은 공간은 공백으로 채워진다. 이처럼 빈 공간을 채우기위해 사용된 공백을 제거하는데 TRIM함수가 사용된다. 

 

인수를 지정하여 공백 이외의 문자를 제거할 수도 있다.

TRIM('abc     ') -> 'abc'

 

 

4. CHARACTER_LENGTH 함수

CHARACTER_LENGTH 함수는 문자열의 길이를 계산해서 반환해주는 함수이다. VARCHAR형의 문자열은 가변 길이이므로 길이가 서로 다른데 CHARACTER_LENGTH  함수를 통해 문자열의 길이를 계산할 수 있다. 문자열의 길이는 문자 단위로 계산되어 수치로 반환된다. 또한 CHAR_LENGTH로 줄여서 사용할 수도 있다. 추가로 OCTET_LENGTH 함수는 문자열의 길이를 바이트 단위로 반환하는 함수이다.

 

이때 OCTET_LENGTH 함수에 대해 주의할 필요가 있다. 문자에 따라 같은 길이라도 다른 바이트로 반환될 수 있다. 예를 들어 ASCII코드와 UTF-8은 한 문자당 저장되는 바이트의 크기가 다르다. 그렇기 때문에 CHARACTER_LENGTH 함수를 사용했을 때 같은 결과가 나오더라도 OCTET_LENGTH 함수를 사용하면 다른 결과가 나올 수 있다.

728x90
반응형

'Languages > SQL' 카테고리의 다른 글

[SQL] 14. 날짜 연산  (0) 2021.08.04
[SQL] 12. 수치 연산  (0) 2021.07.20
[SQL] 11. 결과 행 제한하기 - LIMIT  (0) 2021.06.22
[SQL] 10. 복수의 열을 지정해 정렬하기  (0) 2021.05.18
[SQL] 9. 정렬 - ORDER BY  (0) 2021.05.08