728x90
기존에 Oracle로 쿼리를 짜는게 익숙해진 상태에서 MySql 로 전환하고 있어 오랜만에 정리하고자 글을 쓰려고 합니다 :)
운영 소스에서 보게된 쿼리중 제일 많이 사용하는 부분이 order by Cast (컬럼 as unsigned) 였습니다.
문자열 char형식으로 구성되어 있으나, 해당 컬럼값에 숫자들이 들어가 있으면 정상적으로 정렬되기 어렵기때문에 cast를 이용하여 정렬할때 많이 사용되는 것 같습니다.
그리하여 Cast에 대해 정리를 가져보는 시간을 가져볼께여
Cast 는 형변환을 제공해주는 함수로서, 아래의 형태로 형변환이 가능합니다.
BINARY[(N)]
CHAR[(N)] [charset_info]
DATE
DATETIME
DECIMAL[(M[,D])]
JSON
NCHAR[(N)]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
기존 Oracle의 경우에는 문자를 숫자로 인식하고싶을때 to_number() 함수를 사용했고, 숫자를 문자로 인식하고 싶을때는 to_char() 함수를, date로 인식하고 싶을때에는 to_date() 를 사용합니다.
등등 다른 형변환을 하고 싶을대에는 상황에 맞게 제공된 함수명을 이용해서 변경을 진행하는데요.
하지만 mySql에서는 CAST함수 하나로 여러가지 형태의 형변환이 가능합니다.
문자를 숫자로 변환할 경우에는 cast('1' as unsigned) 의 형식으로 사용해주면 됩니다.
SELECT CAST('1' AS unsigned) test;
반대로 숫자를 문자로 변환할 경우에는 cast(1 as char(1)) 의 형식으로 사용해주면 됩니다.
SELECT CAST(1 AS char(1)) test;
참고로 mySql 은 Oracle 에서 사용하는 dual 테이블이 없어 from 절 없이 select 절만 위와 같이 작성해줘도 실행이 가능합니다. mySql5에서 일부는 사용한다고 하지만 없다고 생각하시는게 편할 것 같습니다
그럼 안녕~~
728x90
'DB > MySql' 카테고리의 다른 글
[DB] MYSQL Column count doesn't match value count at row 1 (0) | 2023.04.27 |
---|---|
[DB] MYSQL TABLE COLUMN 갯수 확인하기 (1) | 2023.04.27 |
[DB] MYSQL DATE_FORMAT 사용법 (0) | 2023.04.07 |
[DB] MYSQL 테이블이 사용된 스키마 (데이터베이스) 조회하기 (0) | 2023.04.06 |
[DB] MySql Sequence 생성 및 사용 방법 정리하기 (0) | 2023.04.06 |