저자 : 아사이 아츠시
출판 : 한빛미디어
- 문자열 데이터를 결합하는 연산자에는 데이터베이스 제품마다 방언이 있음.
연산자/함수 |
데이터베이스 |
+ |
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함수의 경우는 바이트 단위로 길이를 계산하므로 주의.
'Study > DB' 카테고리의 다른 글
[SQL 첫걸음] 3장.정렬과 연산 - 15.CASE 문으로 데이터 변환하기 (0) | 2018.08.30 |
---|---|
[SQL 첫걸음] 3장.정렬과 연산 - 14.날짜 연산 (0) | 2018.08.30 |
[SQL 첫걸음] 3장.정렬과 연산 - 12.수치 연산 (0) | 2018.08.29 |
[SQL 첫걸음] 3장.정렬과 연산 - 11.결과 행 제한하기(LIMIT) (1) | 2018.08.28 |
[SQL 첫걸음] 3장.정렬과 연산 - 10.복수의 열을 지정해 정렬 (0) | 2018.08.28 |