쌓고 쌓다

[SQL] 테이터 형 변환 본문

프로그래밍/SQL

[SQL] 테이터 형 변환

승민아 2022. 6. 27. 00:07
  • 명시적인 변환 : 직접 함수를 사용해서 변환
  • 암시적인 변환 : 별도의 지시 없이 자연스럽게 변환

 

함수를 이용한 명시적인 변환

CAST(), CONVERT() 함수를 사용하며 두 함수는 형식만 다를 뿐 동일한 기능을 갖는다.

CAST ( 값 AS 데이터_형식 [ (길이) ] )
CONVERT ( 값, 데이터_형식 [ (길이) ] )

 

예제

 

buy 테이블의 price 평균을 구했더니 실수가 나왔다. 정수로 바꿔보자.

 

CAST(), CONVERT()

SELECT CAST( AVG(price) AS SIGNED ) '평균 가격' FROM buy;
SELECT CONVERT( AVG(price), SIGNED ) '평균 가격' FROM buy;

CAST, CONVERT 함수 안에는 CHAR, SIGNED, UNSIGNED, DATE, TIME, DATETIME 등이 존재.

SIGNED는 부호가 있는 정수, UNSIGNED는 부호가 없는 정수를 의미한다.

SIGNED는 SIGNED INTEGER, UNSIGNED는 UNSIGNED INTEGER라고 써도 가능하다.

 

날짜형으로 변경

SELECT CAST('2022$12$12' AS DATE);
SELECT CAST('2022@12@12' AS DATE);
SELECT CAST('2022/12/12' AS DATE);
SELECT CAST('2022%12%12' AS DATE);

다양한 구분자를 통해 날짜형으로 변경이 가능하다.

 

SQL의 결과를 원하는 형태로 표현

SELECT num, CONCAT(CAST(price AS CHAR), 'X', CAST(amount AS CHAR), '=') '가격X수량',
	price*amount '구매액'
        FROM buy;

CAST() 함수를 통해 문자로 바꾸고 CONCAT() 함수를 통해 문자를 이어 출력했다.\

 

암시적인 변환

 

문자 '100'과 '200'을 더했더니 300이 출력이 된다.

문자를 더할 순 없으니 자동으로 숫자 100과 200으로 변환해서 덧셈이 이루어진 거다.

SELECT '100' + '200' ;

 

만약에, 문자와 문자를 연결해 출력하려면 CONCAT() 함수를 사용해야 한다.

SELECT CONCAT('100', '200');

 

만약에, 숫자와 문자를 연결해 출력한다면 어떻게 될까?

 

예제(1)

SELECT 100 + '200';

예제(2)

SELECT CONCAT(100, '200');

 

 

문자와 숫자를 연결해 출력하려면 CONCAT(숫자, 문자)로 연결해 사용하자.

 

모든 내용은 '혼자 공부하는 SQL' 도서를 학습후 정리한 내용입니다. 

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] 외부 조인, 상호 조인, 자체 조인  (0) 2022.07.01
[SQL] 내부 조인(INNER JOIN)  (0) 2022.07.01
[SQL] 변수 사용 + LIMIT  (0) 2022.06.26
[SQL] 데이터 형식  (0) 2022.06.26
[SQL] INSERT, UPDATE, DELETE  (0) 2022.06.25
Comments