본문 바로가기
CS/DataBase

데이터베이스 첫걸음 정리 - 13장. 문자열 연산

by yongckim 2022. 9. 4.
728x90
반응형

데이터는 수치형 외에도 문자열형도 존재합니다.

이번에는 SQL에서 문자열형을 연산하는 방법을 알아보겠습니다.

문자열 결합

문자열 결합이란 다음과 같이 문자열 데이터를 결합하는 연산입니다.

'ABC' || '1234 -> 'ABC1234'

문자열을 결합하는 연산자는 데이터 베이스 제품마다 다르며 다음과 같습니다.

연산자/함수 연산 데이터베이스

+ 문자열 결합 SQL Server
     
CONCAT 문자열 결합 MySQL

문자열 결합은 2개의 열 데이터를 모아서 1개의 열 데이터로 처리하고 싶은 경우에 사용됩니다.

다음은 문자열 결합 예시입니다. (테스트 사이트 sqltest.net)

SELECT CONCAT(firstname, lastname)  FROM mysql_test_a;

SUBSTRING 함수

SUBSTRING 함수는 문자열의 일부분을 계산해서 반환해주는 함수입니다.

데이터베이스에 따라서는 함수명이 SUBSTR인 경우도 많습니다.

SELECT reg_date, SUBSTRING(reg_date, 1, 4) FROM mysql_test_a;

SUBSTRING 함수를 사용하면 위와 같이 날짜 데이터에서 연만 따로 추출하는 등 간편하게 데이터를 추출할 수 있습니다.

TRIM 함수

TRIM 함수는 문자열의 앞 뒤로 여분의 스페이스가 있을 경우 이를 제거해주는 함수로 문자열 도중에 존재하는 스페이스는 제거되지 않습니다.

SELECT TRIM('       ABC      '); -> 'ABC'

고정길이 문자열에 대해 많이 사용하는 함수입니다.

앞에서 설명했듯이 CHAR 형의 문자열형에서는 문자열의 길이가 고정되며 남은 공간은 스페이스로 채워집니다.

이처럼 빈 공간을 채우기 위해 사용한 스페이스를 제거하는데 TRIM 함수를 사용할 수도 있습니다.

CHARACTER_LENGTH 함수

CHARACTER_LENGTH 함수는 문자열의 길이를 계산해 돌려주는 함수입니다.

VARCHAR 형의 문자열은 가변 길이이므로 길이가 서로 다를 수 있습니다.

CHARACTER_LENGTH 함수를 사용하면 문자열의 길이를 계산할 수 있습니다.

SELECT CHARACTER_LENGTH(firstname) from mysql_test_a;

문자열의 길이는 문자 단위로 계산되어 수치로 반환됩니다.

또한 함수명은 CHAR_LENGTH로 줄여서 사용할 수 있습니다.

한편 OCTET_LENGTH 함수는 문자열의 길이를 바이트 단위로 계산해 돌려주는 함수입니다.

여기서 바이트는 데이터 단위인 바이트를 의미하며 OCTET_LENGTH 함수를 사용하면 사용한 문자가 몇 바이트의 저장공간을 필요로 하는지 알 수 있습니다.

문자의 경우 인코드 방식(utf-8, ascii, unicode 등)에 따라 필요한 저장공간의 크기가 달리지므로 VARCHAR 형의 최대 길이 역시 바이트 단위로 지정합니다.

하지만 문자세트에 따라 길이가 문자수로 간주되기도 하니 주의할 필요가 있습니다.

문자세트

RDBMS는 문자마다 각기 다른 인코딩 방식을 사용합니다.

한글 같은 경우 “EUC-KR”, “UTF-8”과 같은 인코드 방식을 주로 사용하는데 이를 문자세트라고 부릅니다.

이러한 문자세트는 CHAR_LENGTH 함수 같은 경우 아무런 상관이 없지만 OCTET_LENGTH같은 함수의 경우에는 바이트 단위로 계산하기 때문에 주의할 필요가 있습니다.

알파벳 같은 경우 반각문자, 한글 같은 경우 전각문자라고 부르며 이들의 용량이 다르기 때문에 바이트 단위로 길이를 계산할 경우 단순한 문자의 수가 아니라는 것을 기억해 둡시다.

정리

  • CONCAT 함수는 문자열을 결합하여 반환해주는 함수입니다.
  • SUBSTRING 함수는 문자열의 특정 범위만큼을 반환해주는 함수입니다.
  • TRIM은 문자열의 앞 뒤의 공백을 제거해주는 함수입니다.
  • CHARACTER_LENGTH 함수는 문자열의 길이를 반환해주는 함수입니다.
  • OCTET_LENGTH 함수는 문자열의 길이를 바이트 단위로 계산해 반환해주는 함수입니다.
  • RDBMS는 문자마다 각기 다른 인코딩 방식을 사용하며, EUC-KR, UTF-8과 같은 인코드 방식을 문자세트라고 부릅니다.
  • 알파벳 같은 경우 반각문자, 한글 같은 경우 전각문자로 불리며, 이들의 바이트 크기가 다르기 때문에 바이트 단위로 계산할 때 조심해야 합니다.
반응형