をJSONを生成するために、CONCAT()およびCOALESCE()を組み合わせて、このように非NULL値を引用しながら、私は、のMySQL 5.0(NULL値をフィルタリングするので、何の組み込みを必要としません値をは、私は関数から小さなJSONブロックを構築していますMySQLの
- :
COALESCE(CONCAT('[', group_concat( CONCAT('{ "key": "', REPLACE(a.val, '"', '\\"'), '"}') SEPARATOR ', ') , ']'), 'null') AS jsonval
この(これは、完全なJSONブロックに埋め込まれる値である)のようなものを出力:値なし
[{"key": "foo"}, {"key": "bar"}, {"key": "baz"}]
- を(NUL JSON関数)でL):空の文字列と
null
- :私は私のリストにエントリを追加したいが、何も値が見つからない場合は、文字列
null
代わりの完全なリストを持っている各a.val
に対して[{"key": ""}]
。それはかなりうまく動作しますが、空の文字列だけでなく、得られるJSONの値としてNULL
の値をnullとして処理する必要があります。
REPLACE()
、CONCAT()
とnull値のために一緒にかなりよくCOALESCE()
仕事が、空の文字列が検出されていない、どのように私はNULLと空の文字列は、同じように扱うことができますか?
null値のストライピングについてはthis questionを見ましたが、私はその逆を探しています。
は、なぜあなたはSQLコード内からJSONを生成していますか?一般的には(データベース操作ではなくアプリケーション/データ転送の問題であるため)これを行うべきではありません。 – Dai
私はMySQL 5.0を使用すべきではありません...ビジネス要件!このJSONは転送するのではなく、レポート/保守目的で使用するため、エクスポート用の外部ツールを追加することはできません。 – Preuk
編集後:http://stackoverflow.com/questions/12818897/mysql-group-concat-vs-coalesce-concerning-null-values – Preuk