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 設定の詳細なチュートリアル
1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...
テーブル タグの frame 属性と rules 属性は境界線の表示を制御できます。フレーム プロパ...
この便利なツールでプログラムをより効率的に実行およびコンパイルしますMakefile は自動コンパイ...
Apache Log4j2 が核レベルの脆弱性を報告し、スタックリーダーの友人たちは大騒ぎになりまし...
1. インストール前の準備: 1.1 JDKをインストールするopenjdkをアンインストールする...
1. はじめにイメージマップを使用すると、画像の領域をホットスポットとして指定できます。この領域にマ...
1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...
1. Expressライブラリとジェネレータをインストールするcmdを開いて、次のコマンドを入力しま...
問題の起源docker を使用する場合、残念ながら docker コンテナ内のホストのポート 80 ...
CSS における位置指定の概要position属性は英語で位置を意味し、 CSSでの主な機能は要素...
bmi ボイジャーピッチフォークアルスター食料品店チャウ真/斜めポスタこれは偽のDIYですクリエイテ...
目次1. Nginx の紹介2. 画像サーバーの構築1. Nginx の紹介Nginx はリバース ...
この記事では、vue+echart を使って二重列チャートを実現するための具体的なコードを参考までに...
nginx 設定ファイルは主に 4 つの部分に分かれています。 main{#(グローバル設定) ht...
2005年に業界に入ってから数か月後、労働者の日休みの期間中、1か月以上毎日12時まで残業をしました...