1

そのため、"WITH ROLLUP" によって作成された NULL 値を意味のあるもの (この例では意味のある値 1 に置き換えられています) に置き換えようとしていたところ、奇妙な動作が観察されました (おそらく、*Sql-DB でも試してみてください)。

クエリ:

SELECT
    IF(a <=> NULL, 1, a) as v1,
    IF( a IS NULL, 1, a ) as v2,
    IF( a IS NOT NULL, a, 1 ) as v3,
    IF( ISNULL(a), 1, a ) as v4,
    IF( !ISNULL(a), a, 1 ) as v5,
    IF( !!ISNULL(a), 1, a ) as v6,
    IFNULL( a, 1 ) as v7
FROM
    (SELECT 1 as a) as tmp
GROUP BY
    a WITH ROLLUP

結果:

+------+------+------+------+------+------+------+
| v1   | v2   | v3   | v4   | v5   | v6   | v7   |
+------+------+------+------+------+------+------+
|    0 |    0 |    0 |    0 |    0 |    0 |    0 |
|    1 | NULL |    1 | NULL |    1 | NULL |    1 |
+------+------+------+------+------+------+------+

では、ここでの一般的なルールは何ですか?

説明

ここで行っているのは、さまざまな方法を使用して最後の行の NULL 値を意味のあるものに置き換えていますが、いくつかの方法は失敗し、いくつかの方法は機能します。これらの方法は、異なる MySQL バージョンで安定していますか? 他のSQL方言についてはどうですか? 私たちのmysql db v5.5.28のこの任意の動作について混乱しています

4

0 に答える 0