본문 바로가기

IT/이것저것

Mysql/maria Varchar값 형변환 비교 Varchar to int / int to Varchar

반응형

시간값을 세팅하고 해당시간에 알림을 해주는 기능을 구현 했는데 분명 설정한 시간이 지났는데 알림이 안온다?해서 쿼리를 날려봤는데 사용자가 조회가 안된다.. 왜지?
하고 봤더니 컬럼이 varchar로 되어 있었다.

select * from test_table where time_column <= '1000'

이런 식으로 조회를 하고 있었는데 900시에 조회를 했는데 결과값이 없다??
확인해보니 varchar일 경우 앞자리부터 비교를 한다고 한다...

이런 기본적인 실수를..
이미 데이터가 많이 누적되어있는 테이블이라 컬럼 데이터 타입은 변경이 힘들거 같아서 우회 할 수 있는 방법을 찾던중
mysql cast 함수를 사용하기로 했다.
사용법

Cast(컬럼명 as type)

type 값에는 binary, char, date, time, unsigned(integer), signed(integer) 값 등이 사용가능하다.

select * from test_table where cast(time_column as unsigned) <= cast('1000' as unsigned)

위와 같이 형변환을 후 값을 검색하면 정상적으로 int형으로 값을 비교하는것을 확인 할 수 있다.
cast말고 convert()라는 함수도 있다고 한다.
이렇게 불필요하게 형변환을 하지 말고 초기 테이블 생성시 값을 잘 세팅해서 사용하면 더 좋을거 같다...

728x90
반응형

'IT > 이것저것' 카테고리의 다른 글

linux한서버에 Maria DB 두개 설치하기  (1) 2021.12.15
Maven 의존성 추가하기  (0) 2020.05.12
IMAP / POP3  (0) 2019.09.11