>  Q&A  >  본문

부울 값 간의 SQL 비교로 인해 예상치 못한 결과가 발생할 수 있음

<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粉982009874P粉982009874428일 전531

모든 응답(1)나는 대답할 것이다

  • P粉513316221

    P粉5133162212023-08-19 09:07:28

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

    으아악

    회신하다
    0
  • 취소회신하다