[MySQL] 타입 변환 BINARY, CAST(), CONVERT()

2022. 9. 8. 03:34·Programming/MySQL
728x90

타입 변환(type casting)

MySQL은 비교나 검색을 수행할 때 데이터의 타입이 서로 다를 경우, 내부적으로 타입이 같아지도록 자동 변환하여 처리한다.

하지만 사용자가 명시적으로 타입을 변환할 수 있도록 다양한 연산자와 함수도 같이 제공하고 있다.

  • BINARY
  • CAST()
  • CONVERT()

BINARY

BINARY 연산자는 뒤에 오는 문자열을 바이너리 문자열로 변환한다.

BINARY 연산자를 이용하면 문자가 아닌 바이트를 기준으로 하여 비교나 검색 작업을 수행할 수 있다.

다음 예제는 BINARY 연산자를 이용하여 문자 'a'와 'A'를 비교하는 예제다.

SELECT BINARY 'a' = 'A';
'a' = 'A';
실행 결과
0
1

위의 예제처럼 BINARY 연산자를 이용하면, 비교하려는 문자의 바이트 값을 비교한다.

따라서 문자 'a'와 'A'가 서로 다른 값으로 인식된다.

CAST()

CAST() 함수는 인수로 전달받은 값을 명시된 타입으로 변환하여 반환한다.

이때 변환하고자 하는 타입을 AS 절을 이용하여 직접 명시할 수 있다.

CAST(expr AS type)

AS 절에서 사용할 수 있는 타입

  • BINARY
  • CHAR
  • DATE
  • DATETIME
  • TIME
  • DECIMAL
  • JSON (MySQL 5.7.8부터 제공됨)
  • NCHAR
  • SIGNED [INTEGER]
  • UNSIGNED [INTEGER]

다음예제는  CAST() 함수를 이용하여 문자열 데이터를 UNSIGNED 타입으로 변환하는 예제다.

SELECT 4 / '2',
4 / 2,
4 / CAST('2' AS UNSIGNED);
실행 결과
2
2.0000
2.0000

위의 예제에서 문자열 타입의 데이터를 묵시적으로 타입 변환하여 수행한 나눗셈 연산의 결과는 정수 타입으로 반환된다.

하지만 정수 타입끼리 나눗셈 연산을 한 결과는 실수 타입으로 반환된다.

따라서 문자열 타입의 데이터를 CAST() 함수를 사용하여, 명시적으로 타입 변환해야만 올바른 나눗셈 연산 결과를 얻을 수 있다.

CONVERT()

CONVERT() 함수도 CAST() 함수처럼 인수로 전달받은 값을 명시된 타입으로 변환하여 반환한다.

CONVERT() 함수는 두 번째 인수로 변환하고자 하는 타입을 직접 전달할 수 있다.

-- 1.
CONVERT(expr, type)

-- 2.
CONVERT(expr USING transcoding_name)

USING 절은 서로 다른 문자셋(character set) 간의 데이터 변환을 위해 사용된다.

이때 사용할 수 있는 타입은 CAST() 함수와 같다.

다음 예제는 CONVERT() 함수를 이용하여 문자열 데이터의 문자셋을 UTF-8로 변환하는 예제다.

SELECT CONVERT('abc' USING utf8);
-- 실행 결과 : abc

'Programming > MySQL' 카테고리의 다른 글

[MySQL] DB 공부  (0) 2022.09.13
[MySQL] 패턴 매칭 LIKE, REGEXP  (0) 2022.09.08
[MySQL] 흐름 제어 CASE, IF(), IFNULL(), NULLIF()  (0) 2022.09.08
[MySQL] 비트 연산자 (bitwise operator)  (0) 2022.09.08
[MySQL] 논리 연산자 (logical operator)  (0) 2022.09.08
'Programming/MySQL' 카테고리의 다른 글
  • [MySQL] DB 공부
  • [MySQL] 패턴 매칭 LIKE, REGEXP
  • [MySQL] 흐름 제어 CASE, IF(), IFNULL(), NULLIF()
  • [MySQL] 비트 연산자 (bitwise operator)
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    리액트
    자바스크립트
    CSS
    web
    JavaScript
    react
    TypeScript
    array
    파이썬
    event
    제어문
    object
    next.js
    Python
    변수
    HTML
    MySQL
    타입스크립트
    객체
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[MySQL] 타입 변환 BINARY, CAST(), CONVERT()
상단으로

티스토리툴바