집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 0 가치판단의 함정을 해결하는 방법
최근 Mysql이 여러 값을 반환하는 문제에 직면했고, 마침내 그것이 mysql 필터 조건에서 0 값 판단에 문제가 있다는 것을 알게 되었습니다.
INT 필드 a가 있고, 기본값은 0이며, 프로그램이 전달한 판단 조건은 a = 'abacd'입니다.
입력은 문자열이며 a=0인 모든 데이터가 반환됩니다.
mysql은 정수 판단이지만 입력이 문자열인 경우 문자열이 숫자가 아닌 경우 문자열을 0으로 변환합니다. 따라서
이 코드로 판단한 실제 조건은 a = 0입니다.
MySQL에서 논리적 판단을 내릴 때 들어오는 값이 필드 유형과 일치하는지 확인해야 합니다. 즉, 정수 필드는 정수로 판단해야 하고, 문자열 필드는 문자열로 판단해야 합니다. 유형 간 판단을 내려야 할 경우 비즈니스 로직에 따라 적절한 조정을 해야 문제가 발생하지 않습니다.
필드 a가 varchar 유형이고 값이 0인 경우 a = 0 대신 a='0'을 사용하여 판단해야 합니다. 이유는 위의 이유와 일치합니다. 0 으로 변환되며 최종 결과는 0 = 0입니다.
MySQL에서는 데이터 테이블 필드가 int 유형일 때 해당 필드가 0인지 판단할 수 있으며 문제가 없습니다. char 또는 varchar 유형인 경우 '0'을 사용해야 합니다. 분명히 문자열과 정수는 동일하지 않습니다. 그러니 그런 어리석은 실수를 저지르지 마세요.
다음은 인터넷에서 찾아볼 수 있는 mysql 검색의 원리입니다.
mysql은 먼저 필드 값을 정수로 변환한 후 비교합니다.
필드의 첫 번째 숫자가 문자열이면 정수로 변환되어 0이 됩니다.
일반적으로 문자열을 검색할 때는 따옴표가 필요합니다.
위 내용은 MySQL에서 0 가치판단의 함정을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!