そのため、"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のこの任意の動作について混乱しています