SQLクエリでintまたはnullをブール値に変換する最良の方法は次のとおりです。
私の知る限り(間違っている場合は修正してください)、SQLにはリテラルブール値の概念はありません。ブール値に評価される式を持つことはできますが、出力することはできません。
つまり、CASE WHENを使用して、比較に使用できる値を生成できます。
SELECT
CASE WHEN ValueColumn IS NULL THEN 'FALSE' ELSE 'TRUE' END BooleanOutput
FROM
table
ケースを使用する必要はありません...
select (column_name is not null) as result from table_name;
NULL以外のすべてのフィールドに対して1を返し、NULLのすべてのフィールドに対して0を返します。これは、SQLのブール値に到達するのに近い値です。
SELECT
CASE
WHEN thevalue IS NULL THEN 0
ELSE 1
END AS newVal
FROM .... (rest of select)
こんな感じになると思う
実際には、ISNULLは、値IS NULL THEN 0
結果のConvert(BIT、Value)を実行できます。何かのSQLは値がブール値ではないというエラーを返すためです。
isnull(column - column + 1, 0) != 0
Oracleでは、falseに0を、trueに1を使用すると仮定します。
SELECT DECODE( col, NULL, 0, 1) FROM ...
CASE構文を使用してこれを書くこともできますが、上記はOracleでは慣用的です。 DECODEはスイッチ/ケースに少し似ています。 colがNULLの場合、0が返され、それ以外の場合は1が返されます。
通常、1を使用する場合、それは真であり、それ以外の場合は意味します。
そう:
SELECT IsDefault = CASE WHEN IsDefault = 1 THEN 'true' ELSE 'false' END
FROM table
私がOracleで知っている最も短いもの:
_SELECT NVL2(nullableColumn, 1, 0) FROM someTable
_
NVL2(value, ifNotNull, ifNull)
は、ifNotNull
がnullでない場合はvalue
を返し、そうでない場合はifNull
を返します。