나는 쿼리가의 MySQL CAST 반환 잘못된 데이터
SELECT MAX(CAST(user_name as SIGNED)) as max_id FROM (`users`)
이
2.01303045556E+12
을 반환하지만 실제로는 최대 값이
2013030455555
누구는 그런 일이 방법을 알고있다가 ??
나는 쿼리가의 MySQL CAST 반환 잘못된 데이터
SELECT MAX(CAST(user_name as SIGNED)) as max_id FROM (`users`)
이
2.01303045556E+12
을 반환하지만 실제로는 최대 값이
2013030455555
누구는 그런 일이 방법을 알고있다가 ??
맞습니다.
2.01303045556E+12
실제로는 2013030455555
입니다.
x E+12
는 (12 제로이어서 2) x*10^12
2*10^12=2000000000000
을 의미한다.
이것은 표기법 (일반적으로 부동 소수점) 숫자 표현입니다. Scientific notation at wikipedia (아래로 스크롤하여 "E 표기법"참조)을 참조하십시오.
을 제거하려면 해당 데이터를 float 대신 10 진수 또는 정수로 전송할 수 있습니다. 어쩌면 더 나은 방법이 있을지 모르지만 나는 그걸 잘 모릅니다.
예 :
-- example for 16 digits
SELECT MAX(CAST(user_name as DECIMAL(16,0)) as max_id FROM (`users`)
또 다른 방법 : 수의 변화 형식 PHP SQL 또는 어쩌면 당신이 그것을 사용하는 경우.
하지만 올바르게 포맷해야 할 수도 있습니다. [** here **] (http://www.sqlfiddle.com/#!2/e4cea/4). –