2017-01-20 33 views
8

私は、好ましくはプレーンなMySQLコマンドのみを使用して、結果表をMySQLのJSON配列に変換したいと考えています。クエリ結果表をMySQLのJSON配列に変換するには

SELECT name, phone FROM person; 

| name | phone | 
| Jack | 12345 | 
| John | 23455 | 

と例えば、予想されるJSON出力は

[ 
    { 
    "name": "Jack", 
    "phone": 12345 
    }, 
    { 
    "name": "John", 
    "phone": 23455 
    } 
] 

だろう平野のMySQLでそれを行う方法はありますか?

EDIT:

は、例えばでこれを行うにはどのようにいくつかの答えがあります。 MySQL and PHPが、私は純粋なMySQLのソリューションを見つけることができませんでした。

+0

[OK]を[OK]を、なぜこれを行うにしますか? – Strawberry

+0

GROUP_CONCATとCONCATの組み合わせ –

+0

どのようにこのクエリを実行していますか? – Schwern

答えて

7

@Schwernの助けを借りて、私はこのクエリを実装することができました。これはうまくいくようです!

SELECT CONCAT(
    '[', 
    GROUP_CONCAT(JSON_OBJECT('name', name, 'phone', phone)), 
    ']' 
) 
FROM person; 

そして、このクエリはフラグmysql -N -sとコマンドラインから実行されるとき、ヘッダーとグリッドは結果から削除され、出力はプレーンJSONアレイです。

+2

mysqlクライアントを使用している場合、[代わりに '--json'を使用できます](https://dev.mysql.com/doc/refman/5.7/en/mysql-shell-json-output.html)どのクエリでも動作します。 – Schwern

+1

ああ、うわー。ヒント@Schwernのおかげで! – ronkot

9

json_objectを使用すると、JSONオブジェクトとして行を取得できます。

これは配列に入れたり、間にカンマを入れません。それらをフェッチしているコードでそれを行う必要があります。

+0

ありがとう、これはすでに非常に近いです!私はまだこれらのオブジェクトから配列を構築する方法を試しています。 – ronkot

+0

私はこの 'ERROR 1305(42000):FUNCTION mydb.JSON_OBJECTは存在しません 'というエラーを受け取りました。どのようにこの機能が存在することを確認できますか? –

+0

@AnthonyKongどのバージョンをお使いですか? 'json_object'は' 5.7'以上でしか使用できません。 –

関連する問題