Perbandingan SQL antara nilai boolean boleh membawa kepada hasil yang tidak dijangka
P粉982009874
2023-08-18 16:25:41
<p>Mengapa kebanyakan (semua?) pangkalan data SQL memberikan hasil berikut: </p>
<pre class="brush:php;toolbar:false;">PILIH SALAH <
PILIH BETUL <
PILIH TIDAK(SALAH) <
PILIH TIDAK(BENAR) < ? </pra>
<p>Hanya untuk menyemak semula: </p>
<pre class="brush:php;toolbar:false;">PILIH TIDAK(BENAR) = SALAH -- BENAR / 1 Ok
PILIH TIDAK(SALAH) = BENAR -- BENAR / 1 Ok</pre>
<p>Dalam Postgres saya juga boleh menyemak: </p>
<pre class="brush:php;toolbar:false;">SELECT pg_typeof(TRUE), pg_typeof(NOT(FALSE));
-- boolean |.
<p>Saya telah mencuba PostgreSQL, SQLite3 dan MariaDB dan semuanya memberikan hasil yang tidak dijangka yang sama. </p><p>
<strong>Apa yang saya hilang? </strong></p>
Saya tidak pasti
NOT(FALSE)
是如何评估的,但NOT
不是一个函数。如果你想要对一个布尔字面量取非,那么括号应该放在整个表达式的周围,即使用(NOT FALSE)
而不是NOT(FALSE)
. Pertimbangkan contoh berikut: