MySQL 5.7.8 では json フィールドが導入されました。このタイプのフィールドは使用頻度は低くなりますが、実際の運用では一部の企業ではまだ使用されています。これを例にして、json フィールドの操作方法を紹介します。 例から始めましょう: mysql> テーブル test1(id int、info json) を作成します。 クエリは正常、影響を受けた行は 0 行 (0.02 秒) mysql> test1 に値を挿入します (1,'{"name":"yeyz","age":26}'),(2,'{"name":"zhangsan","age":30}'),(3,'{"name":"lisi","age":35}'); クエリは正常、3 行が影響を受けました (0.02 秒) 記録: 3 重複: 0 警告: 0 mysql> test1 から * を選択します。 +------+---------------------------------+ | ID | 情報 | +------+---------------------------------+ | 1 | {"年齢": 26, "名前": "yeyz"} | | 2 | {"年齢": 30, "名前": "zhangsan"} | | 3 | {"年齢": 35, "名前": "lisi"} | +------+---------------------------------+ セット内の 3 行 (0.00 秒) まず、id が int フィールド、info が json フィールドであるテーブル test1 を作成し、上に示すように 3 つのデータを挿入しました。 mysql> test1 から * を選択します。 where json_extract(info,"$.age")>=30; +------+---------------------------------+ | ID | 情報 | +------+---------------------------------+ | 2 | {"年齢": 30, "名前": "zhangsan"} | | 3 | {"年齢": 35, "名前": "lisi"} | +------+---------------------------------+ セット内の 2 行 (0.00 秒) json_extract メソッドを使用して、json 形式のコンテンツを取得できます。で: 1. $ 記号は json のルート ディレクトリを表します。 2. json の age フィールドを削除するのと同じ効果を持つ $.age を使用します。 3. もちろん、関数の先頭にはフィールド名情報を書き込む必要があります。 json でよく使われる関数を見てみましょう。 a. json_valid は、それが json フィールドであるかどうかを判断します。そうであれば 1 を返し、そうでない場合は 0 を返します。 mysql> json_valid(2) を選択します。 +---------------+ | json_valid(2) | +---------------+ | 0 | +---------------+ セット内の1行(0.01秒) mysql> json_valid('{"num":2}') を選択します。 +-------------------------+ | json_valid('{"num":2}') | +-------------------------+ | 1 | +-------------------------+ セット内の 1 行 (0.00 秒) mysql> json_valid('2') を選択します。 +-----------------+ | json_valid('2') | +-----------------+ | 1 | +-----------------+ セット内の 1 行 (0.00 秒) mysql> json_valid('name') を選択します。 +--------------------+ | json_valid('名前') | +--------------------+ | 0 | +--------------------+ セット内の 1 行 (0.00 秒) ここで注目すべきは、文字列2が渡された場合、返される結果は1になるということである。 b. json_keys は、json フィールドの最上位キー値を返します。 mysql> json_keys('{"name":"yeyz","score":100}') を選択します。 +------------------------------------------+ | json_keys('{"name":"yeyz","score":100}') | +------------------------------------------+ | ["名前", "スコア"] | +------------------------------------------+ セット内の1行(0.01秒) mysql> json_keys('{"name":"yeyz","score":{"math":100,"English":95}}') を選択します。 +----------------------------------------------------------------+ | json_keys('{"name":"yeyz","score":{"math":100,"English":95}}') | +----------------------------------------------------------------+ | ["名前", "スコア"] | +----------------------------------------------------------------+ セット内の 1 行 (0.00 秒) # 複数のレイヤーがある場合は、最後に $ メソッドを使用して、いずれかのレイヤーのディレクトリを取得できます。mysql> select json_keys('{"name":"yeyz","score":{"math":100,"English":95}}','$.score'); +--------------------------------------------------------------------------+ | json_keys('{"name":"yeyz","score":{"math":100,"English":95}}','$.score') | +--------------------------------------------------------------------------+ | ["数学", "英語"] | +--------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) c. json_length 関数は最上位レイヤーのキーの数を返します。中間の特定のレイヤーを取得する場合は、次のように $ メソッドを使用できます。 mysql> json_length('{"name":"yeyz","score":{"math":100,"English":95},"age":26}'); を選択します。 +---------------------------------------------------------------------------+ | json_length('{"name":"yeyz","score":{"math":100,"English":95},"age":26}') | +---------------------------------------------------------------------------+ | 3 | +---------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) mysql> json_length('{"name":"yeyz","score":{"math":100,"English":95},"age":26}','$.score') を選択します。 +------------------------------------------------------------------------------------------------------+ | json_length('{"name":"yeyz","score":{"math":100,"English":95},"age":26}','$.score') | +------------------------------------------------------------------------------------------------------+ | 2 | +------------------------------------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) d. json_depth 関数、json ファイルの深さ、テスト例は次のとおりです。 mysql> json_depth('{"aaa":1}'),json_depth('{}'); を選択します。 +-------------------------+------------------+ | json_depth('{"aaa":1}') | json_depth('{}') | +-------------------------+------------------+ | 2 | 1 | +-------------------------+------------------+ セット内の 1 行 (0.00 秒) mysql> json_depth('{"name":"yeyz","score":{"math":100,"English":95},"age":26}'); を選択します。 +--------------------------------------------------------------------------+ | json_depth('{"name":"yeyz","score":{"math":100,"English":95},"age":26}') | +--------------------------------------------------------------------------+ | 3 | +--------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) ここで注意すべきは、{'aa':1}形式のJSONの深さは2である。 e. json_contains_path 関数は、json に 1 つ以上のメンバーがあるかどうかを取得します。 mysql> @j='{"a":1,"b":2,"c":{"d":4}}' を設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) #oneは、メンバーが1つ含まれている限り、1を返すことを意味します。 mysql> json_contains_path(@j,'one','$.a','$.e') を選択します。 +------------------------------------------+ | json_contains_path(@j,'one','$.a','$.e') | +------------------------------------------+ | 1 | +------------------------------------------+ セット内の 1 行 (0.00 秒) #all はすべてのメンバーが含まれることを意味し、その場合にのみ 1 が返されます。 mysql> json_contains_path(@j,'all','$.a','$.e') を選択します。 +------------------------------------------+ | json_contains_path(@j,'all','$.a','$.e') | +------------------------------------------+ | 0 | +------------------------------------------+ セット内の1行(0.01秒) mysql> json_contains_path(@j,'one','$.c.d') を選択します。 +--------------------------------------+ | json_contains_path(@j,'one','$.c.d') | +--------------------------------------+ | 1 | +--------------------------------------+ セット内の 1 行 (0.00 秒) mysql> json_contains_path(@j,'one','$.a.d') を選択します。 +--------------------------------------+ | json_contains_path(@j,'one','$.a.d') | +--------------------------------------+ | 0 | +--------------------------------------+ セット内の 1 行 (0.00 秒) f. json_type 関数は json 内のメンバーのタイプを決定し、json_extract と組み合わせて使用する必要があります。 mysql> test1 から * を選択します。 +------+---------------------------------+ | ID | 情報 | +------+---------------------------------+ | 1 | {"年齢": 26, "名前": "yeyz"} | | 2 | {"年齢": 30, "名前": "zhangsan"} | | 3 | {"年齢": 35, "名前": "lisi"} | +------+---------------------------------+ セット内の 3 行 (0.00 秒) #名前のタイプを判断しますmysql> select json_type(json_extract(info,"$.name")) from test1; +----------------------------------------+ | json_type(json_extract(info,"$.name")) | +----------------------------------------+ | 文字列 | | 文字列 | | 文字列 | +----------------------------------------+ セット内の 3 行 (0.00 秒) # 年齢のタイプを決定しますmysql> select json_type(json_extract(info,"$.age")) from test1; +---------------------------------------+ | json_type(json_extract(info,"$.age")) | +---------------------------------------+ | 整数 | | 整数 | | 整数 | +---------------------------------------+ セット内の 3 行 (0.00 秒) #名前と年齢の組み合わせの型を判断すると、配列であることがわかります mysql> test1 から json_type(json_extract(info,"$.name","$.age")) を選択します。 +------------------------------------------------+ | json_type(json_extract(info,"$.name","$.age")) | +------------------------------------------------+ | 配列 | | 配列 | | 配列 | +------------------------------------------------+ セット内の 3 行 (0.00 秒) g. * の役割、すべての値については、以下の例を参照してください。 { "a":1, "b":2, 「ハ」: { "d":4 } 「e」: { 「d」: { 「ddd」: 「5」 } } } mysql> @j='{"a":1,"b":2,"c":{"d":4},"e":{"d":{"ddd":"5"}}}' を設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) #すべてのメンバーmysql> select json_extract(@j,'$.*'); +---------------------------------------+ | json_extract(@j,'$.*') | +---------------------------------------+ | [1, 2, {"d": 4}, {"d": {"ddd": "5"}}] | +---------------------------------------+ セット内の 1 行 (0.00 秒) すべてのメンバーのうち #d メンバーmysql> select json_extract(@j,'$.*.d'); +--------------------------+ | json_extract(@j,'$.*.d') | +--------------------------+ | [4, {"ddd": "5"}] | +--------------------------+ セット内の 1 行 (0.00 秒) 以上がMySQLにおけるJSONフィールドの操作方法の詳しい内容です。MySQL JSONフィールドの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Vue3は独自のページングコンポーネントをカプセル化します
>>: springcloud alibaba nacos linux 設定の詳細なチュートリアル
XHTML タグの紹介<br />おそらく、前のセクションで、XHTML ファイルと通常...
目次1. リストインターフェースとその他のモジュールの表示処理2. 従来のインターフェースコンポーネ...
この記事では、宝くじマシンの効果を実現するためのJavaScriptの具体的なコードを参考までに共有...
まずはコードと効果を見てみましょう↓ <スタイル> 。主要 { アウトライン: 1px ...
フロントエンドエンジニアとして、IE は私たちにとって馴染み深いものであるはずです。設計案を実装する...
目次2. 目的2.1 オブジェクトにプロパティを追加する2.3 オブジェクトの複製2.4 複数のオブ...
目次ステップ1: プロジェクトをインストールするディレクトリにnode_modulesをインストール...
まず、状態マネージャーとは何か、そしてそれが何をするのかを知る必要があります。複数のページで同じプロ...
目次1 バージョンと計画1.1 バージョン情報: 1.2 クラスター計画2. 展開1. ファイアウォ...
この記事では、主に CSS3 フレックス エラスティック ボックスの自動塗りつぶしの書き方について詳...
MySQL のデフォルトの varchar 型は大文字と小文字を区別しません (insensitiv...
1. 約束の説明Promise は、非同期操作の最終状態 (失敗または正常完了) とその結果の値を...
1. 時間の種類は次のように分けられます。 1. ネットワーク時間(タイムゾーンの設定、ntpサーバ...
MySQLで重複データを削除する詳細な例重複レコードには 2 つの意味があります。1 つは完全に重複...
1. Navicatの紹介1. Navicat とは何ですか? Navicat は強力な MySQ...