カテゴリ:

条件式関数

BOOLAND

2つの数値式のブール値 AND を計算します。次のブールセマンティクスに従います。

  • ゼロ以外の値(負の数を含む)はtrueと見なされます。

  • ゼロ値はfalseと見なされます。

結果として、関数は以下を返します。

  • True 、両方の式がゼロ以外の場合。

  • False 、両方の式がゼロまたは1つの式がゼロで、他の式がゼロ以外または NULLの場合。

  • NULL 、両方の式が NULL であるか、1つの式が NULL であり、他の式がゼロ以外の場合。

こちらもご参照ください。

BOOLNOTBOOLORBOOLXOR

構文

BOOLAND( <expr1> , <expr2> )
Copy

引数

expr1

数値式です。

expr2

数値式です。

戻り値

この関数は BOOLEAN 型または NULL の値を返します。

使用上の注意

この関数は 浮動小数点数 を丸めます。そのため、ゼロでない浮動小数点数をゼロに丸めると、予期せぬ結果を返すことがあります。

この動作の例と回避策については、 浮動小数点数に対してブール値の AND 結果を計算します。 をご参照ください。

以下の例では、 BOOLAND 関数を使用しています。

整数および NULL の値に対してブール値の AND 結果を計算します。

以下のクエリは、整数と NULL 値のブール AND 結果を計算します。

SELECT BOOLAND(1, -2),
       BOOLAND(0, 0),
       BOOLAND(0, NULL),
       BOOLAND(NULL, 3),
       BOOLAND(NULL, NULL);
Copy
+----------------+---------------+------------------+------------------+---------------------+
| BOOLAND(1, -2) | BOOLAND(0, 0) | BOOLAND(0, NULL) | BOOLAND(NULL, 3) | BOOLAND(NULL, NULL) |
|----------------+---------------+------------------+------------------+---------------------|
| True           | False         | False            | NULL             | NULL                |
+----------------+---------------+------------------+------------------+---------------------+

浮動小数点数に対してブール値の AND 結果を計算します。

以下の例は、ゼロに丸められた浮動小数点数に対して、この関数が予期しない結果を返す可能性があることを示しています。

以下のクエリでは、関数呼び出しの結果が True になることが期待されますが、関数がゼロ以外の浮動小数点値をゼロに丸めるため、 False が返されます。

SELECT BOOLAND(2, 0.3);
Copy
+-----------------+
| BOOLAND(2, 0.3) |
|-----------------|
| False           |
+-----------------+
SELECT BOOLAND(-0.4, 5);
Copy
+------------------+
| BOOLAND(-0.4, 5) |
|------------------|
| False            |
+------------------+

必要に応じて、関数の代わりに AND論理演算子 を使用することで、浮動小数点値のこの丸め動作を回避できます。たとえば、次のクエリは True を返します。

SELECT 2 AND 0.3;
Copy
+-----------+
| 2 AND 0.3 |
|-----------|
| True      |
+-----------+