MySQL에 열 이름만 있고 값과 동일한 위치는 없는 이유는 무엇입니까? 구문 오류가 아닙니다.
P粉481815897
P粉481815897 2023-09-16 10:37:20
0
1
657

왜 이러한 쿼리는 구문 오류가 아닌가? 저는 SQL Server에 대한 배경 지식을 가지고 있는데 정말 놀랐습니다.

从 my_table WHERE id 中选择 *

값이 있는지 확인할 것이라고 생각했지만 동작이 일관되지 않습니다. id를 사용하면 id로 위치를 반환하지만 name을 사용하면 아무것도 반환하지 않습니다.

https://www.db-fiddle.com/f/enWGyAW4BtLC64PVzkbTVK/0

P粉481815897
P粉481815897

모든 응답(1)
P粉511896716

MySQL에는 표준 ANSI SQL을 준수하지 않는 일부 동작이 있습니다. 이 경우 MySQL은 정수 0 값을 false,将任何整数非零值视为 true로 처리합니다. 표준 SQL에서 정수는 부울과 동일하지 않지만 MySQL에서는 동일합니다.

쿼리를 실행하면 WHERE id时,它会返回id 0행.

쿼리를 실행하면WHERE name 문자열을 정수로 평가합니다. 즉, 선행 숫자 문자(있는 경우)의 숫자 값을 취하고 이후의 숫자가 아닌 문자는 무시한다는 의미입니다. 선행 숫자가 없으면 문자열의 정수 값은 0입니다.

쿼리WHERE name时,仅当该列中存储的字符串具有非零前导数字时,它才会返回行。在您的示例 'outro'를 실행하면 해당 열에 저장된 문자열의 선행 숫자가 0이 아닌 경우에만 행을 반환합니다. 귀하의 예 'outro'에는 숫자가 아닌 숫자만 있으므로 값은 0이고 조건을 충족할 수 없습니다.

MySQL은 설계된 대로 작동하지만 표준 SQL은 아닙니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿