부울 값 간의 SQL 비교로 인해 예상치 못한 결과가 발생할 수 있음
P粉982009874
P粉982009874 2023-08-18 16:25:41
0
1
528
<p>대부분의 SQL 데이터베이스가 다음과 같은 결과를 제공하는 이유는 무엇입니까? </p> <pre class="brush:php;toolbar:false;">FALSE 선택 < FALSE / 0 확인 TRUE < FALSE 선택 - FALSE / 0 확인 NOT(FALSE) < FALSE -- TRUE / 1 무엇을 선택합니까? NOT(TRUE) < FALSE -- TRUE / 1 무엇을 선택합니까? ? </pre> <p>다시 확인해 보세요: </p> <pre class="brush:php;toolbar:false;">SELECT NOT(TRUE) = FALSE -- TRUE / 1 확인; SELECT NOT(FALSE) = TRUE; -- TRUE / 1 확인</pre> <p>Postgres에서는 다음도 확인할 수 있습니다.</p> <pre class="brush:php;toolbar:false;">SELECT pg_typeof(TRUE), pg_typeof(NOT(FALSE)); -- 부울</pre> <p>저는 PostgreSQL, SQLite3, MariaDB를 사용해 보았지만 모두 예상치 못한 동일한 결과를 얻었습니다. </p><p> <strong>내가 무엇을 놓치고 있나요? </strong></p>
P粉982009874
P粉982009874

모든 응답(1)
P粉513316221

잘 모르겠습니다 NOT(FALSE) 是如何评估的,但 NOT 不是一个函数。如果你想要对一个布尔字面量取非,那么括号应该放在整个表达式的周围,即使用 (NOT FALSE) 而不是 NOT(FALSE). 다음 예를 고려해보세요:

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!