데이터 형변환 함수(CASTING 함수)

Hyuntae Jung·2022년 7월 25일
0

MS SQL

목록 보기
15/41
post-thumbnail

1. 데이터 형변환 함수

  • CAST()
  • CONVERT()
  • TRY_CONVERT()
  • PARSE()
  • TRY_PARSE()

PARSE함수는 문자열에서 날짜/시간 및 숫자 형식으로 변환할 경우에 사용한다.
TRY가 붙은 함수는 형변환 오류가 생겼을 때, NULL값을 반환한다.
CONVERT(), PARSE() TRY가 붙지 않은 함수는 오류가 생겼을 때 오류 메세지가 뜬다.

CAST( 표현식 AS 데이터형식 [길이] )
CONVERT( 데이터형식 [길이], 표현식 [, 스타일] )
TRY_CONVERT (데이터형식 [길이], 표현식 [, 스타일])
PARSE (문자열 AS 데이터 형식)
TRY_PARSE (문자열 AS 데이터 형식)

2. 데이터 생성

CREATE TABLE PRODUCTS(
	NAME VARCHAR(20),
	PRICE INT,
	AMOUNT INT
);

GO

INSERT PRODUCTS VALUES('제품1', 500, 3);
INSERT PRODUCTS VALUES('제품2', 1000, 20);
INSERT PRODUCTS VALUES('제품3', 1500, 100);
INSERT PRODUCTS VALUES('제품4', 200, 70);
INSERT PRODUCTS VALUES('제품5', 50, 15);
INSERT PRODUCTS VALUES('제품6', 700, 9);
INSERT PRODUCTS VALUES('제품7', 80, 26);
INSERT PRODUCTS VALUES('제품8', 100, 40);
INSERT PRODUCTS VALUES('제품9', 200, 11);
INSERT PRODUCTS VALUES('제품10', 500, 20);
INSERT PRODUCTS VALUES('제품11', 300, 10);
INSERT PRODUCTS VALUES('제품12', 2000, 2);

SELECT * FROM PRODUCTS;

3. CAST(), CONVERT(), TRY_CONVERT()

SELECT AVG(AMOUNT) AS [제품 평균 수량] FROM PRODUCTS;

SELECT AVG(CAST(AMOUNT AS FLOAT)) AS [제품 평균 수량] FROM PRODUCTS;
SELECT AVG(CONVERT(FLOAT, AMOUNT)) AS [제품 평균 수량] FROM PRODUCTS;
SELECT AVG(TRY_CONVERT(FLOAT, AMOUNT)) AS [제품 평균 수량] FROM PRODUCTS;

CASTING함수를 이용하여 FLOAT으로 형변환할 경우 소숫점까지 표현된다.

SELECT price, amount, price/amount AS [단가/수량]
  FROM products;

SELECT price, amount, CAST(CAST(price AS FLOAT)/amount AS DECIMAL(8,2))  AS [단가/수량]
  FROM products;

DECIMAL ?

3. PARSE(), TRY_PARSE()

SELECT TRY_PARSE('111.12313' AS INT);

소숫점인 자료에 PARSE( '' AS INT)를 쓰면 에러가 발생한다.

SELECT TRY_PARSE('111.12313' AS INT);
SELECT TRY_PARSE('111.12313' AS FLOAT);

4. 형변환의 구분

  • 명시적 형변환: CAST(), CONVERT() 함수를 이용해서 데이터의 형식을 변환 하는 것
  • 암시적 형변환: CAST(), CONVERT()함수를 사용하지 않고 형이 변환되는 것

4.1. 암시적 형변환

  • 문자형타입의 변수 + '200'
    : 문자 + 문자 (형변환이 이루어지지 않음)

    ''로 둘러싸여있어 문자이다.

  • 문자형타입의 변수 + 200
    : 문자 + 정수 (암시적 형변환: 정수로 형변환 됨)

  • 문자형타입의 변수 +100.12
    : 문자 +실수 (암시적 형변환: 실수로 형변환 됨)

4.2. 명시적 형변환

CAST(문자형타입의 변수 AS INT) + 200 ; --> 정수로 변환 후에 연산

SELECT CAST(125.123 AS NCHAR(5));

125.123은 7자리이므로 NCHAR(5)로 설정할 경우 오류가 발생한다.

SELECT CAST(1231.123 AS INT); 는 정상 출력되나,
SELECT CAST('01231.123' AS INT); '으로 숫자 담을 시 오류가 발생한다.

SELECT CAST(1231.123 AS INT);

강의: ms sql 2014 제대로 배우기 1

0개의 댓글