SQL 첫걸음 - 3장 문자열 연산(4/6)
1. 문자열 결합
문자열 데이터를 결합하는 연산자에는 데이터베이스 제품마다 방언이 있음.
unit는 문자열형, quantity는 INTEGER형 열.
CONCAT 함수를 이용해 두 열을 결합.
문자열 결합이지만 수치데이터도 문제없이 연산 가능.
단, 문자열로 결합한 결과는 문자열형이 됨.
2. SUBSTRING 함수
SUBSTRING함수는 문자열의 일부분을 계산해서 반환해주는 함수.
디비에 따라 함수명이 SUBSTR인 경우도 있음.
3. TRIM 함수
문자열 앞뒤로 여분의 스페이스가 있을 경우 이를 제거해주는 함수.
문자열 도중에 존재하는 스페이스는 제거되지않음.
고정길이 문자열형에 대해 많이 사용하는 함수.
4. CHARACTER_LENGTH 함수
문자열의 길이를 계산해 돌려주는 함수.
VARCHAR형의 문자열은 가변 길이이르모 길이가 서로 다름.
해당 함수를 사용하면 문자열의 길이를 계산할 수 있음.
문자열의 길이는 문자 단위로 계산되어 수치로 반환.
또한 함수면은 CHAR_LENGTH로 줄여서 사용가능.
OCTET_LENGTH 함수
문자열의 길이를 바이트 단위로 계산해 돌려주는 함수.
문자 하나의 데이터가 몇 바이트의 저장공간을 필요로 하는지는 ‘인코드 방식’에 따라 결정됨.
( 문자를 수치화(인코드)하는 방식에 따라 필요한 저장공간의 크기가 달라짐 )
cf. 문자세트(character set)
알파벳의 경우는 반각문자 / 한글은 전각 문자
반각문자는 전각문자 폭의 절반밖에 안되며 저장용향 또한 전각문자 쪽이 더 큼.
반각의 알파벳이나 숫자,기호는 ‘ASCII 문자’라고 불림.
전각문자인 한글의 경우 ‘EUC-KR’, ‘UTF-8’ 등의 인코드 방식을 주로 사용.
인코드 방식은 데이터베이스나 테이블을 정의할 때 변경할 수 있음.
이를 RDBMS에서는 ‘문자세트’라 부름.
-> 한문자가 몇 바이트인지는 쓰이는 문자세트에 따라 다름.
ex) EUC-KR 에서 ASCII문자는 1바이트, 한글은 2바이트의 용량.
UTF-8에서 ASCII문자는 1바이트, 한글은 3바이트의 용량.
CHAR_LENGTH함수를 사용하는 경우 한글이든 ASCII문자든 문자 수로 계산 되어 문제되지않지만,
OCTET_LENGTHg함수의 경우는 바이트 단위로 길이를 계산하므로 주의.
출처 : https://smilejh.tistory.com/