>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 0 가치판단의 함정을 해결하는 방법

MySQL에서 0 가치판단의 함정을 해결하는 방법

PHPz
PHPz앞으로
2023-05-29 12:01:261417검색

    0 값 판단에 관한 MySQL의 함정

    최근 Mysql이 여러 값을 반환하는 문제에 직면했고, 마침내 그것이 mysql 필터 조건에서 0 값 판단에 문제가 있다는 것을 알게 되었습니다.

    간결한 질문은 다음과 같습니다

    INT 필드 a가 있고, 기본값은 0이며, 프로그램이 전달한 판단 조건은 a = 'abacd'입니다.

    입력은 문자열이며 a=0인 모든 데이터가 반환됩니다.

    Reason

    mysql은 정수 판단이지만 입력이 문자열인 경우 문자열이 숫자가 아닌 경우 문자열을 0으로 변환합니다. 따라서

    이 코드로 판단한 실제 조건은 a = 0입니다.

    해결 방법

    MySQL에서 논리적 판단을 내릴 때 들어오는 값이 필드 유형과 일치하는지 확인해야 합니다. 즉, 정수 필드는 정수로 판단해야 하고, 문자열 필드는 문자열로 판단해야 합니다. 유형 간 판단을 내려야 할 경우 비즈니스 로직에 따라 적절한 조정을 해야 문제가 발생하지 않습니다.

    문제의 확장

    필드 a가 varchar 유형이고 값이 0인 경우 a = 0 대신 a='0'을 사용하여 판단해야 합니다. 이유는 위의 이유와 일치합니다. 0 으로 변환되며 최종 결과는 0 = 0입니다.

    Mysql 값 0 판단에 대한 오해 요약

    MySQL에서는 데이터 테이블 필드가 int 유형일 때 해당 필드가 0인지 판단할 수 있으며 문제가 없습니다. char 또는 varchar 유형인 경우 '0'을 사용해야 합니다. 분명히 문자열과 정수는 동일하지 않습니다. 그러니 그런 어리석은 실수를 저지르지 마세요.

    다음은 인터넷에서 찾아볼 수 있는 mysql 검색의 원리입니다.

    mysql은 먼저 필드 값을 정수로 변환한 후 비교합니다.

    필드의 첫 번째 숫자가 문자열이면 정수로 변환되어 0이 됩니다.

    일반적으로 문자열을 검색할 때는 따옴표가 필요합니다.

    위 내용은 MySQL에서 0 가치판단의 함정을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제