MySQL 데이터베이스에 간단한 테이블이 있습니다. 표 T에는 tinyint unsigned 유형의 열이 있으며 길이는 1입니다.이 열을 사용하여 일부 부울 값을 저장합니다. 이상한 결과가 MySQL에서 빼기
나는 몇 가지 간단한 산술 물건을하려고
, 나는 예를 들어, 매우 이상한 결과를 얻을 :SELECT A - 1 FROM T
수익을 A 값은 1,하지만 반환하는 경우 0, 올바르게, 18,446,744,073,709,551,615 (나는 IFS 2^64를 생각한다 - 1) A가 0 일 경우
내 질문은 ... 왜, 어떻게 해결할 수 있습니까?
EDIT : A를 서명으로 선언하면 문제가 해결되지만 ... 이유는 알 수 없습니다. 아마 컬럼이 부호없는 경우 -1이 매우 큰 숫자 (2^n - 1)로 표시되지만 결과가 선택하는 컬럼의 유형과 같은 경우 왜 64 비트 숫자입니까? 당신이 시도하고 다시 가장 큰 값으로 라운드 루프 0에서 1을 빼면 그 많은 의미가있는 경우
A가 'INT SIGNED'로 선언하면 –
의 도움이 될 수 있습니다. 그래, 맞아. 왜 이상한 결과가 나오지? – Spotlight
부호없는 정수는 음수 값을 저장할 수 없습니다. –