Mysqlはフィールドスプライシングのための3つの関数を実装している

Mysqlはフィールドスプライシングのための3つの関数を実装している

データをオペレーションにエクスポートする場合、フィールドの結合は避けられません。MySQL でこれができれば、多くのコードを節約できます。

  • 連結()
  • 連結ws()
  • グループ連結()

Mysql には、フィールドを連結できる関数がいくつかあります。

連結()

複数のフィールドを 1 つのフィールドに連結するには、空の文字列を使用します。

mysql> mm_content から concat(id, type) を選択し、制限 10 にします。
+------------------+
| 連結(ID, タイプ) |
+------------------+
| 100818画像 |
| 100824画像 |
| 100825ビデオ |
| 100826ビデオ |
| 100827ビデオ |
| 100828ビデオ |
| 100829ビデオ |
| 100830ビデオ |
| 100831ビデオ |
| 100832ビデオ |
+------------------+
セット内の行数は 10 です (0.00 秒)

ただし、いずれかのフィールド値が NULL の場合、結果は NULL になります。

mysql> mm_content から concat(id, type, tags) を選択し、制限 10 にします。
+------------------------+
| 連結(ID、タイプ、タグ) |
+------------------------+
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+------------------------+
セット内の行数は 10 です (0.00 秒)

連結ws()

上記の方法で区切り文字を使用してフィールドを分割する場合、各フィールドの途中に文字列を挿入する必要があり、非常に面倒です。

concat_ws()セパレーター問題を一度に解決でき、1 つの値が NUll だからといってすべての値が NUll になることはありません。

mysql> mm_content から concat_ws(' ', id, type, tags) を選択し、制限を 10 にします。
+--------------------------------+
| concat_ws(' ', id, type, tags) |
+--------------------------------+
| 100818 画像 |
| 100824 画像 |
| 100825 ビデオ |
| 100826 ビデオ |
| 100827 ビデオ |
| 100828 ビデオ |
| 100829 ビデオ |
| 100830 ビデオ |
| 100831 ビデオ |
| 100832 ビデオ |
+--------------------------------+
セット内の行数は 10 です (0.00 秒)

グループ連結()

最後のはすごいですね。通常であれば、このように記述すると間違いなくエラーになります。

mysql> test_user グループから年齢別に ID を選択します。
エラー 1055 (42000): SELECT リストの式 #1 は GROUP BY 句内になく、GROUP BY 句内の列に機能的に依存しない非集計列 'test_user.id' が含まれています。これは sql_mode=only_full_group_by と互換性がありません。

しかし、 group_concat()グループ化された状態にある他のフィールドをクエリ用の文字列に連結することができる。

mysql> test_user グループから group_concat(name) を age で選択します。
+--------------------+
| group_concat(名前) |
+--------------------+
| 文寧 |
| wxnacy、勝利 |
+--------------------+
セット内の 2 行 (0.00 秒)

デフォルトでは、データの区切りにカンマが使用されますが、区切り文字を指定することもできます。

mysql> test_user group by age から group_concat(名前区切り文字 ' ') を選択します。
+----------------------------------+
| group_concat(名前区切り文字 ' ') |
+----------------------------------+
| ウェンニン |
| wxnacy 勝利 |
+----------------------------------+
セット内の 2 行 (0.00 秒)

文字列を特定の順序で並べる

mysql> select group_concat(name order by id desc Separator ' ') from test_user group by age;
+---------------------------------------------------+
| group_concat(名前をID降順区切り文字 ' ' で並べ替え) |
+---------------------------------------------------+
| ニン・ウェン |
| 勝つ wxnacy |
+---------------------------------------------------+
セット内の 2 行 (0.00 秒)

複数のフィールドを連結する場合、デフォルトでは連結に空の文字列が使用されます。concat_ws concat_ws()メソッドを使用して 1 つのレイヤーをネストできます。

mysql> test_user から、年齢別に group_concat(concat_ws(',', id, name) セパレーター ' ') を選択します。
+------------------------------------------------------+
| group_concat(concat_ws(',', id, name) セパレーター ' ') |
+------------------------------------------------------+
| 1,wen 2,ning |
| 3,wxnacy 4,win |
+------------------------------------------------------+
セット内の 2 行 (0.00 秒)

上記は、Mysql がフィールドスプライシングを実装する 3 つの関数の詳細です。MySQL の文字列スプライシングの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Mysqlのマージ結果と水平スプライシングフィールドの実装手順
  • MySQL 文字列連結関数 GROUP_CONCAT の詳細な説明
  • MySQL で複数のフィールドを連結する詳細な例

<<:  Docker イメージ管理の一般的な操作コード例

>>:  Windows 上で Nginx+Tomcat クラスタを実装するプロセスの分析

推薦する

Linuxのテキスト処理コマンドsortの詳細な説明

テキストファイルの内容を並べ替える使用方法: ソート + オプション + ファイル名 (複数のファイ...

Spark RDD をデータフレームに変換し、それを MySQL に書き込む例

DataframeはSpark 1.3.0で導入された新しいAPIで、Sparkで大規模な構造化デー...

JSはユーザー登録インターフェース機能を実装します

この記事の例では、ユーザー登録インターフェース機能を実装するためのJSの具体的なコードを参考までに共...

Linuxがすべてのコマンドをサポートしていない問題の解決策

Linux がすべてのコマンドをサポートしていない場合はどうすればいいですか?すべてのLinuxコマ...

上部の固定divは半透明効果に設定できます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Linux で MySQL スケジュール タスク バックアップ データを実装する方法

序文バックアップは災害復旧の基礎であり、システム操作エラーやシステム障害によるデータ損失を防ぐために...

Dockerの一般的なコマンドとヒントのまとめ

インストールスクリプトUbuntu / CentOS Debian のインストールに問題があるようで...

Vueのコンポーネントの詳細な説明

目次1. コンポーネントの登録2. コンポーネントの使用3. 父から息子へ4. 息子から父へ5. ス...

JSが絵柄デジタル時計を実現

この記事の例では、画像デジタル時計を実現するためのJSの具体的なコードを参考までに共有しています。具...

すべてのブラウザに対応したデータURIとMHTMLの完全なソリューション

データURI Data URI は、小さなファイルをドキュメントに直接埋め込むために RFC 239...

トップ 10 Js 画像処理ライブラリ

目次導入1. 異食症2. レナ3. コンプレッサー4. ファブリック5. ぼかす6. 画像を結合する...

TortoiseSvn Little Turtle インストール 最新の詳細なグラフィックチュートリアル

tortoiseGit のインストール時にいつも問題があったので、単純に svn に変更しました。途...

jsは動的にテーブルを生成します(ノード操作)

この記事の例では、テーブルを動的に生成するjsの具体的なコードを参考までに共有しています。具体的な内...

CSS 極座標のサンプルコード

序文このプロジェクトには、衛星測位用のグラフィックスを含むチャートの要件があり、北半球または南半球の...

UIエンジニアのキャリアについての私たちの考え

私は長い間落ち込んでいます、なぜでしょうか?以前、お客様から、提供されたソフトウェアが正常に動作しな...