2016-03-27 9 views
12

たとえば、ある程度のmysqlテーブルにというデータという名前のJSON列があり、この列が単一の配列であるとします。したがって、データには、例えば、[1,2,3,4,5]が含まれます。今は、配列要素の1つが2より大きいデータ列を持つすべての行を選択します。これは可能ですか?私は、次のことを試してみましたが、それは関係なく、配列の値を常に真であると思われる:mysqlでjson配列を検索するには?

SELECT * from my_table where JSON_EXTRACT(data, '$[*]') > 2; 
+0

postgresqlでjson配列を検索することができます。通常はmysqlの他のフィールドとして検索できます。ここにあるmysql関数を使用して検索する必要があります:https://dev.mysql.com/doc /refman/5.7/ja/json-search-functions.html – Thresh

+0

ありがとうございましたが、これらの関数を使用してjson配列を検索する方法が見つかりませんでした –

+0

あなたはこれのための解決策を見つけることができますか? –

答えて

1

可能な方法は、文字列のマッチングなどの問題に対処することです。 JSONを文字列に変換して一致させます。

またはJSON_CONTAINSを使用できます。

+0

文字列のマッチングがうまくいかないかどうかわかりませんが、私は同等以上のものと比較したいのですが、同じものはjson_containsと同じです。含まれ、関数を比較しません。 –

0

解決策が見つかったのかどうかわかりません。 MariaDBで見つかったのは、配列内のパスを検索する方法です。例えば、アレイの[{ "ID" は:1}、{ "ID":2}]、Iは2

SELECT JSON_SEARCH('name_field', 'one', 2, null, '$[*].id') 
FROM name_table 

結果に等しいIDを持つパスを見つける必要がある。

"$[1].id" 

アスタリスクは配列全体を検索することを示します