MySQL에서 문자열을 숫자로 자동 캐스트/변환하시겠습니까?
MySQL은 문자열을 숫자 값으로 자동으로 캐스팅\변환합니까?
변환은 어떻게 작동합니까?
- '1234'=1234 ?
- '1' = 1?
- 'text' = 1?
을 고려할 때units.id
bigint 유형인데, 이 쿼리는 어떻게 해석됩니까?
SELECT table.*
FROM table
WHERE id='text'
처음 세 가지 질문에 대한 대답은 예, 예, 아니오입니다.
문자열이 있을 때'text'
숫자로 변환되면 값이 됩니다.0
.
유형 변환에 대한 설명서는 여기에 있습니다.
문의 사항:
SELECT table.*
FROM table
WHERE id='text';
이 규칙은 설명서에서 다음과 같이 발췌한 것입니다.
다른 모든 경우에는 인수가 부동 소수점(실제) 숫자로 비교됩니다.
즉, 이는 실제로 다음과 같습니다.
WHERE id = 0.0
MySQL은 기본적으로 1과 '1'을 동일하게 취급하지만 MySQL 동작을 엄격 모드로 설정하여 변경할 수 있습니다.
set @@GLOBAL.sql_mode = "STRICT_ALL_TABLES";
set @@SESSION.sql_mode = "STRICT_ALL_TABLES";
또는 my.cnf 파일에서 이러한 변수를 영구적으로 설정할 수 있습니다.sql_mode = ''
이렇게 하면 잘못된 유형이 사용될 경우 MySQL에서 오류가 발생합니다.자세한 내용은 http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html 을 참조하십시오.
다른 DBMS와 마찬가지로 암묵적인 변환을 수행합니다.
다른 유형의 경우 MySQL 문서에 따르면 변환/캐스트 함수 http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html 를 사용해야 합니다.
다음은 SO: MySQL 쿼리에서 텍스트를 숫자로 변환하는 예제입니다.
언급URL : https://stackoverflow.com/questions/60808883/mysql-using-where-in-a-query-with-number-ignores-trailing-chars
'programing' 카테고리의 다른 글
텍스트 보기 텍스트를 클릭하거나 탭하는 방법 (0) | 2023.08.12 |
---|---|
MySQL 테이블에 사용자 정의 CHECK 제약 조건을 추가하려면 어떻게 해야 합니까? (0) | 2023.08.12 |
MS Excel에서 공통 집합 연산(결합, 교차, 마이너스)을 수행하려면 어떻게 해야 합니까? (0) | 2023.08.12 |
RegisterStartupScript가 ScriptManager의 Updatepanel에서 작동하지 않습니다.왜 그런 것일까요? (0) | 2023.08.07 |
NVM에서 지정한 노드 버전을 사용하기 위한 Visual Studio 코드 (0) | 2023.08.07 |