2017-12-07 10 views
-1

을 선택 MySQL의 쿼리 내가 같은 테이블 사용자가 잘못 기록

id name  status 
--------------------- 
1  user1  1 
2  user2  1 
3  user3  1 

나는이 쿼리는 ID를 2로 레코드를 선택합니다 실행

는 왜 이런 일이 일어 났는가? id가 2 인 레코드를 선택해야합니다.

SELECT * 
FROM (
`users` 
) 
WHERE `id` = '2a290cf764371'; 

이 문제를 어떻게 해결할 수 있습니까? 당신은 정수에 대한 문자열을 확인하기 때문에 발생

+0

암시 적 유형 변환이 있습니다. 즉, '2a290cf764371'은 '2'로 변환 된 후 'id'와 비교됩니다. 이 문제를 해결하려면 클라이언트 측에서 유형 검사 유효성 검사를 추가해야합니다. –

+0

[MySQL 자동 문자열에서 정수 캐스팅으로 where 절을 복제 할 수 있습니까?] (https://stackoverflow.com/questions/33543671/mysql-automatic-string-to-integer-casting-in-where-clause) –

답변

2

, 그래서 comparation의이 종류를하지 않는다, mysql 자동 시전 문자열을 정수하고 2a290cf764371의 정수 2이다, 난 당신이 전에 int마다 ID를 캐스팅하는 것이 좋습니다 쿼리를 실행하십시오.