[SQL] where 절에서 정수 캐스팅에 MySQL을 자동 문자열?
SQLwhere 절에서 정수 캐스팅에 MySQL을 자동 문자열?
나는 MySQL의 새로운 모르지만, 이상한 상황이 나를 놀라게 가지고있는 우연히 오늘 내 코드에서 일어났다. 이 나에게 동일한 결과를 제공하는 이유 누군가가 설명 할 수 있습니까?
SELECT * FROM `products` WHERE id = 12
과
SELECT * FROM `products` WHERE id = '12ABC'
같은 레코드가 선택되면서 두 경우 모두에서 나는 같은 결과를 얻을. 그 두 번째는 나에게 아무것도 돌려주지 않는 것이라고 기대! 내 ID 필드는 AUTO_INCREMENT 플래그가 켜져와 부호없는 INT (11)이다.
해결법
-
==============================
1.MySQL의 문서에서 :
MySQL의 문서에서 :
선적 서류 비치
그러니까 기본적으로, '12ABC'는 12으로 캐스팅된다.
-
==============================
2.MySQL은 변환이 2 개 다른 유형 사이에 비교 할 수 있도록한다. 그것은 int와 문자열을 처음부터 시작하는 문자열에서 숫자를 얻기 위해 시도합니다.
MySQL은 변환이 2 개 다른 유형 사이에 비교 할 수 있도록한다. 그것은 int와 문자열을 처음부터 시작하는 문자열에서 숫자를 얻기 위해 시도합니다.
그것은 당신이 예를 들어했다
'ABC12'
INT에 문자열 변환의 결과는 0이 될 것이다
from https://stackoverflow.com/questions/33543671/mysql-automatic-string-to-integer-casting-in-where-clause by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 TOP N 행을 정렬 (0) | 2020.07.18 |
---|---|
[SQL] 가입 및 다중 테이블에서 선택 사용하여 차이가 있나요? (0) | 2020.07.18 |
[SQL] 문자와 비교 VARCHAR (0) | 2020.07.18 |
[SQL] 쉼표로 구분 된 값을 갖는 열세요 (0) | 2020.07.18 |
[SQL] MERGE 문에 구문 오류 (0) | 2020.07.18 |