SQL/SQL 기본

SQL 기본(5): MSSQL 자료형 형변환과 유니코드 필요성

민서타 2023. 8. 21. 00:17

1. 형변환

 묵시적 형변환: 조건절의 데이터 타입이 다를 때 우선순위가 높은 타입으로 형이 내부적으로 변환

 명시적 형변환: 형 변환 함수를 사용하는 경우

형 변환 우선순위:
   -정수 타입 > 문자 타입

 

2. 주요 명령어:

 DECIMAL(M, N): 최대 문자열 자릿수 M, 소수점 지정 N

 CONVERT INTO: (변환할 데이터타입, 원하는 열).

 VARCHAR와 NVARCHAR의 차이: NVARCHAR는 유니코드로 표기하며 용량(바이트)을 기존보다 2배 차지한다.

 

3. 유니코드 표기법의 중요성:

 나라별(언어별) OS가 다르기 때문에 오류없이 불러오고 읽기 위해 필요(균일한 표기법)


테이블 생성:

CREATE TABLE doit_implict(
NUM INT,
COL1 INT,
COL2 INT,
COL3 DECIMAL (8,2), --최대문자열, 소수점 지정
COL4 NVARCHAR(50)
)


INSERT INTO doit_implict VALUES(1, 10, 3, 3.0, 3)
INSERT INTO doit_implict VALUES(2, 10, 3, 3.0, '3')
INSERT INTO doit_implict VALUES(3, 10, 3, 3.0, N'문자열')  --N문자열:유니코드

 

암시적 형변환:
SELECT * FROM doit_implict

SELECT COL1/COL2 FROM doit_implict --정수 출력(버림)
SELECT COL1/COL3 FROM doit_implict --소수 출력(DECIMAL)

SELECT COL1/COL4 FROM doit_implict WHERE NUM = 1
SELECT COL1/COL4 FROM doit_implict WHERE NUM = 2 --문자열 숫자도 연산
SELECT COL1/COL4 FROM doit_implict WHERE NUM = 3 --오류 발생

형변환(문자열-숫자 변경 불가)
SELECT CONVERT (INT, COL4) FROM doit_implict WHERE NUM = 1
SELECT CONVERT (INT, COL4) FROM doit_implict WHERE NUM = 2
SELECT CONVERT (INT, COL4) FROM doit_implict WHERE NUM = 3 --변경할 수없는 데이터타입

SELECT * FROM doit_implict WHERE NUM = '1'
SELECT * FROM doit_implict WHERE COL3 = '3.0'
SELECT * FROM doit_implict WHERE COL3 = '3'
SELECT * FROM doit_implict WHERE COL3 = 3  --상위 데이터로 변환

반응형