Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL IFNULL() 함수의 기본 반환 데이터 타입은 무엇일까?

MySQL에서 IFNULL(표현식1, 표현식2) 함수의 기본 반환 타입은 두 표현식 중 더 일반적인(general) 타입으로 결정됩니다. 이때 타입의 우선순위는 STRING → REAL → INTEGER 순서를 따릅니다.

쉽게 말해, 인수로 전달된 값 중 하나라도 문자열이 있다면 결과는 문자열 타입이 되고, 실수와 정수가 함께 사용되면 실수 타입이 되는 방식입니다. 아래 예시를 통해 구체적으로 확인해 보겠습니다.

예시: IFNULL() 반환 타입 확인하기

mysql> Create table testing Select IFNULL(100,'testing123');
Query OK, 1 row affected (0.18 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> Select * from testing568;
+-----------------------+
| IFNULL(100,'testing') |
+-----------------------+
| 100                   |
+-----------------------+
1 row in set (0.00 sec)

mysql> Describe testing568;
+-----------------------+------------+------+-----+---------+-------+
| Field                 | Type       | Null | Key | Default | Extra |
+-----------------------+------------+------+-----+---------+-------+
| IFNULL(100,'testing') | varchar(7) | NO   |     |         |       |
+-----------------------+------------+------+-----+---------+-------+
1 row in set (0.03 sec)

결과 분석

위 결과 집합에서 확인할 수 있듯이, 이 경우 생성된 컬럼의 타입은 varchar(7), 즉 문자열(String) 타입입니다.

정수 100과 문자열 'testing'이 함께 IFNULL() 함수에 전달되었을 때, MySQL은 우선순위가 더 높은 일반적인 타입인 문자열을 반환 타입으로 선택한 것입니다. 만약 두 인수가 모두 정수였다면 반환 타입은 INTEGER가 되었을 것입니다.

정리

  • IFNULL()의 반환 타입은 두 인수 중 더 일반적인 타입으로 결정됩니다.
  • 타입 우선순위는 STRING > REAL > INTEGER 순입니다.
  • 문자열과 정수가 섞여 있으면 결과 컬럼은 varchar와 같은 문자열 타입이 됩니다.