자격증/SQLD

[SQL 첫걸음] 13강. 문자열 연산

동호다찌 2022. 4. 4. 09:23

문자열 결합

  • 문자열 결합이란 문자열 데이터를 결합하는 연산을 말한다.
  • 문자열을 결합하는 연산자에는 데이터베이스 제품마다 방언이 있어서 차이가 있다.
+ || CONCAT SUBSTRING TRIM CHARACTER_LENGTH

데이터베이스 제품별 문자열 결합 연산자

  • +: SQL Server
  • ||: Oracle, DB2, PostgreSQ
  • CONCAT: MySQL
  • 연산자, || 연산자, CONCAT함수로 문자열을 결합할 수 있다!
  • 문자열 결합은 2개의 열 데이터를 모아서 1개의 열로 처리하고 싶은 경우에 자주 사용한다.

문자열 결합 예시

SELECT * FROM world.countrylanguage c ;

위의 테이블 countrylanguage Language열과 CountryCode열의 데이터를 결합해보자.

mysql> SELECT CONCAT(c.CountryCode,"_", c.Language) FROM world.countrylanguage c;
oracle> SELECT c.CountryCode || c.Language  FROM world.countrylanguage c;
sql server> SELECT c.CountryCode + c.Language  FROM world.countrylanguage c;

countrylanguage의 Language열은 Varchar형의 열이고, CountryCode열은 Char형이다.
CONCAT함수를 이용해 두 열을 결합하였다.
데이터 타입이 다르더라도 데이터의 결합도 문제없이 연산할 수 있다.

문자열 + 수치형 데이터를 결합하여도 문제가 없다.
단, 문자열과 수치형 데이터를 결합한 결과는 문자열형이 된다.


SUBSTRING 함수

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

앞 4자리(년도) 추출

SUBSTRING('20140125001', 1, 4) -> '2014'
#SUBSTRING('문자열', 몇 째 자리부터, 추출할 개수)

5째자리부터 2자리(월) 추출

SUBSTRING('20140125001', 5, 2) -> '01'

TRIM 함수

  • 문자열의 앞뒤로 여분의 스페이스가 있을 경우 이를 제거해주는 함수로
  • 문자열 도중에 존재하는 스페이스는 제거되지 않는다.
  • 고정길이 문자열형에 대해 많이 사용하는 함수이다.
TRIM('ABC   ') -> 'ABC'

CHARACTER_LENGTH 함수

  • OCTET_LENGTH 함수: 문자열의 길이를 바이트 단위로 계산해 돌려주는 함수

문자세트 별 문자 수와 바이트 수

👉 결과

문자세트문자 수바이트 수

EUC-KR 12 19
UTF-8 12 26

문자열 데이터의 길이는 문자세트에 따라 다르다!