programing

MySQL에서 문자열을 숫자로 자동 캐스트/변환하시겠습니까?

newstyles 2023. 8. 12. 10:03

MySQL에서 문자열을 숫자로 자동 캐스트/변환하시겠습니까?

MySQL은 문자열을 숫자 값으로 자동으로 캐스팅\변환합니까?
변환은 어떻게 작동합니까?

  • '1234'=1234 ?
  • '1' = 1?
  • 'text' = 1?

을 고려할 때units.idbigint 유형인데, 이 쿼리는 어떻게 해석됩니까?

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