SQL 코드를 작성하면서, 숫자 가공이나 문자 출력 시 자주 발생할 수 있는 오류에 관해서이다.
본인은 맞게 작성했다고 생각할 수 있지만 Data Type Error 라는 문구와 함께 에러가 발생하는 경우가 있다.
먼저 'Data Type'은 쉽게 설명해 '자료형' 을 의미한다.
처음 테이블을 만들면서 컬럼을 만들고 그 자료형을 작성한다.
CREATE TABLE (
id INT,
name VARCHAR(50),
age INT
);
이와 같이 테이블을 만들 때 id의 경우 Data Type 이 int, name의 경우는 Varchar 인 것이다.
따라서 Data Type 에러는 이 데이터 타입에 맞지 않게 코드를 작성했을 경우 발생하는 에러이다.
이 Data Type을 출력 결과에서 쉽게 확인할 수도 있는데
이 사진에 보면 '수수료' 의 경우 왼쪽에 123, '식당 이름'의 경우 왼쪽에 'A-Z' 라고 써있는 것을 볼 수 있다.
이것이 자료형이 어떤 타입인지를 쉽게 나타내주는 것이다.
123의 경우 int, A-Z의 경우 VARCHAR임을 상징하며 그에 맞춰서 사용하도록 할 수 있다.
실제 데이터를 보다 보면 데이터가 숫자로 나타나있어도 타입이 A-Z로 구분되어 있는 경우도 있을 수 있다.
이는 VARCHAR 임을 나타내며 숫자로 혼동하고 코드를 작성할 경우, 에러의 원인이 된다.
다만 그렇다고 숫자는 숫자끼리, 문자는 문자끼리 코드를 나누어 작성하기에는 원하는 코드를 구성하기 어려울 수 있다.
이런 경우처럼 문자/숫자를 혼합하여 함수에 사용하는 경우, 데이터 타입을 변경해주어야 한다.
활용 예시
//숫자로 변경
cast(if(rating='Not given', '1', rating) as decimal)
//문자로 변경
concat(restaurant_name, '-', cast(order_id as char))
#10. 문제 풀이 - 배달 시간 판단 (0) | 2024.10.25 |
---|---|
#8. IF/CASE 실습 (0) | 2024.10.23 |
#7. IF/CASE 문법 (4) | 2024.10.23 |
#6. 문자 데이터 가공 실습 (3) | 2024.10.18 |
#5. 문자 데이터 가공 - 형태 변화 (1) | 2024.10.18 |