Study/DB

[SQL 첫걸음] 3장.정렬과 연산 - 13.문자열 연산

momo02 2018. 8. 30. 08:45
반응형

저자 : 아사이 아츠시

출판 : 한빛미디어 



1. 문자열 결합

- 문자열 데이터를 결합하는 연산자에는 데이터베이스 제품마다 방언이 있음.

 연산자/함수

 데이터베이스

 +

 SQL Server

 ||

 Oracle, DB2, PostgreSQL

 CONCAT

 MySQL


- 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함수의 경우는 바이트 단위로 길이를 계산하므로 주의.


반응형