1

オブジェクトの文字列配列jsonを含む多くの列を持つテーブルがあります。

これらの配列からいくつかの要素を削除する必要があります。1 つの行から要素を削除する方法を見つけましたが、複数の行でそれを行うにはどうすればよいですか?

1行について、json_searchを使用して削除する必要がある要素を見つけましたが、削除する行と要素が多数あります。ストアド プロシージャ (while ループ) なしでそれを行う方法はありますか?

これはデータのサンプルです:

-------------------------------------------------------------------
id | DATA                                                          |
-------------------------------------------------------------
1  | {"array":[{"a":"a","b":"b","c":"c"},{"b":"b","c":"c"}]}|
------------------------------------------------------------
2 | {"array":[{"b":"b","c":"c","f":"f"},{"b":"b","c":"c","d":"d"}]}|
-------------------------------------------------------------------
3 | {"array":[{"a":"a","b":"b","c":"c"},{"g":"g","ff":"ff"}]}|
4 | {"array":[{"q":"q"},{"g":"f","e":"e"}]}|

および/またはarrayを含む要素のみをそれぞれから削除する必要がありますag

私のクエリは次のとおりです。

UPDATE MY_TABLE
SET DATA = JSON_REMOVE(
    DATA,
    REPLACE(JSON_SEARCH(
                (SELECT DATA WHERE DATA LIKE "%a%"),
              'all',
              "%a%"
            ),
    '"',
    '')
) WHERE DATA LIKE "%a%";

すべての列を更新する方法を見つけましたが、このクエリはオブジェクト全体ではなく、json フィールドのみを削除します。オブジェクト全体を削除するにはどうすればよいですか?

4

1 に答える 1

0

方法を見つけました。

データは を"$.array[5].a"呼び出した後の形式でしたJSON_SEARCH。replace'.a'を justに置き換える別の replace にラップする必要がありました''

于 2016-09-30T17:12:27.200 に答える