MySQLでは、JSON_LENGTH()
関数はJSONドキュメントの長さを返します。
この関数を呼び出すときは、JSONドキュメントを引数として指定します。ドキュメント内の値の長さを返すパス引数を指定することもできます。
構文
構文は次のようになります:
JSON_LENGTH(json_doc[, path])
json_doc
の場所 深さを返すJSONドキュメントであり、path
ドキュメント内の値の長さを返すために使用できるオプションの引数です。
例1-空のオブジェクト
これは、空のオブジェクトのみを含むJSONドキュメントです。
SELECT JSON_LENGTH('{}') 'Result';
結果:
+--------+ | Result | +--------+ | 0 | +--------+
例2–データを含むオブジェクト
そして、データを追加するとどうなりますか。
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
結果:
+--------+ | Result | +--------+ | 1 | +--------+
これは1
を返します オブジェクトに1つのメンバーが含まれているためです。 2番目のメンバーを追加すると、次のようになります。
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
結果:
+--------+ | Result | +--------+ | 2 | +--------+
例3–アレイ
配列の長さは、配列に含まれる要素の数です。
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
結果:
+--------+ | Result | +--------+ | 3 | +--------+
これは、要素の1つに独自の配列(またはオブジェクト)が含まれている場合でも当てはまります。
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
結果:
+--------+ | Result | +--------+ | 3 | +--------+
例4–パス引数
オプションのpath
を提供できます ドキュメント内の指定されたパスの長さを返す引数。
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
結果:
+--------+ | Result | +--------+ | 3 | +--------+
この場合、Person
の長さを返します 3つのメンバーを含むオブジェクト。
それらのメンバーの1つだけに絞り込むと(たとえば、Name
メンバー)、これを取得します:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
結果:
+--------+ | Result | +--------+ | 1 | +--------+
しかし、それをHobbies
に絞り込むと 配列、これを取得します:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
結果:
+--------+ | Result | +--------+ | 2 | +--------+