mysqlはコンマに基づいてデータ行を複数の行に分割します

mysqlはコンマに基づいてデータ行を複数の行に分割します

分離効果

-- 別居前
1,2,3,4
-- 別居後
1
2
3
4

コマンドラインを分ける

選択 
 substring_index(substring_index('1,2,3,4',',', b.help_topic_id + 1), ',', -1) 結果
から 
 mysql.help_topic b
どこ 
 b.help_topic_id < (LENGTH('1,2,3,4') - LENGTH(REPLACE('1,2,3,4', ',', '')) + 1);

コマンドラインの説明

help_topic自体はMysqlヘルプ説明コメントテーブルで、Mysqlのさまざまな用語を説明するために使用されます。このテーブルのデータIDは0から増加するため、カウントするのに便利ですが、8.0.17バージョンには686のデータしかありません。この数を超える場合は、テーブルをカスタマイズする必要があります。

カウント用の一時テーブルとして使用できます。クエリ ステートメントは、カウントに help_topic のみを使用します。余分な部分は実際にはダーティ データです。

b.help_topic_id < 分離後の行の合計数を取得する

b.help_topic_id < (LENGTH('1,2,3,4') - LENGTH(REPLACE('1,2,3,4', ',', '')) + 1)

この文は実際にはトラバーサルであり、help_topic_idは0から始まり、

順番にインターセプトし、まずn番目の区切り文字の前のすべての文字をインターセプトし、次に文字列の最後の文字をインターセプトします。

1 —— 1
1,2 —— 2
1、2、3 —— 3
1、2、3、4 —— 4

mysql.help_topic 権限なしの解決策

mysql.help_topic の機能は、SUBSTRING_INDEX 関数のデータ (つまり、区切り文字で区切られたデータ) を結合して、直積を作成することです。

mysql.help_topic を使用する権限がない場合は、クエリを実行するテーブルに接続するための一時テーブルを作成できます。

フィールドを分割できる文字列の最大数を取得します。

SELECT MAX(LENGTH(a.`name`) - LENGTH(REPLACE(a.`name`, ',', '' )) + 1) FROM `test` a;

一時テーブルを作成し、そこにデータを追加します。

知らせ:

  • 一時テーブルには、0または1から始まる自動増分データの列が必要です。
  • 一時テーブル名は任意であり、フィールドは1つだけ存在できます。
  • 一時的に表現されるデータの量は、MAX(LENGTH(a.name) - LENGTH(REPLACE(a.name, ',', '' )) + 1) より大きくなければなりません。

関与する機能

部分文字列インデックス(文字列、区切り、カウント)

パラメータ名説明する
str分割する文字列
デリム区切り文字、文字で区切る
カウントcount が正の数の場合、n 番目の区切り文字の前のすべての文字が取得されます。count が負の数の場合、末尾から n 番目の区切り文字の後のすべての文字が取得されます。

置換(文字列、元の文字列、置換後の文字列)

パラメータ名説明する
str置換する文字列
文字列から置換する文字列
文字列置換する文字列

length(str) 文字列の長さを取得する

これで、MySQL でカンマに基づいて 1 行のデータを複数の行に分割する方法に関するこの記事は終了です。MySQL でカンマに基づいて 1 行のデータを複数の行に分割する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 文字列分割の例 (区切り文字なしの文字列抽出)
  • MySQL 文字列分割操作 (区切り文字を含む文字列のインターセプション)
  • MySQL テーブルの垂直分割と水平分割
  • MySQL の指定文字によるマージと分割の例のチュートリアル
  • MySQL インターセプションと文字列分割関数の使用例
  • MYSQL データベースのデータ分割の概要: サブライブラリとサブテーブル
  • MySQLの一般的なデータ分割方法
  • Perlを使用してデータテーブル(MySQL)を分割し、データインスタンスを移行する

<<:  ベンダー プレフィックス: ブラウザ エンジン プレフィックスが必要なのはなぜですか?

>>:  HTML onfocus gain focus および onblur lose focus イベントの詳細な説明

推薦する

CSS エラスティック ボックス flex-grow、flex-shrink、flex-basis の詳細な説明

3 つの属性 flex-grow、flex-shrink、flex-basis の機能は次のとおりで...

Docker の詳細なイラスト

1. Dockerの紹介1.1 仮想化1.1.1 仮想化とは何ですか?コンピュータにおける仮想化とは...

MySQL で B+ ツリー インデックスを使用する利点は何ですか?

この問題を理解する前に、まず MySQL テーブルのストレージ構造を確認し、次にバイナリ ツリー、マ...

Vue における nextTick の役割といくつかの簡単な使用シナリオ

目的nextTickの役割といくつかの簡単な使用シナリオを理解する文章その機能は何ですか?遅延コール...

電子署名を実装するWeChatミニプログラム

この記事では、WeChatミニプログラムで電子署名を実装するための具体的なコードを参考までに紹介しま...

JS を使用してバイナリ ツリー トラバーサル アルゴリズムのサンプル コードを実装する

目次序文1. バイナリツリー1.1. 二分木の走査1.2. jsを使用してバイナリツリーを表現する1...

IDEA 2020 で Tomcat サーバーを構成するための詳細な手順

IDEA 2020 で Tomcat を構成する手順は次のとおりです。最初のステップはTomcatを...

Ubuntu 18.04 に VMware Tools をインストールする際のエラーを解決する

1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...

Centos 用の rpm パッケージのカスタマイズと yum リポジトリの構築に関するチュートリアル

1 yumでソフトウェアをインストールしたときにダウンロードしたrpmパッケージを保存しますyum ...

Linux と最もよく使用されるコマンドの紹介 (習得は簡単ですが、問題の 95% 以上を解決できます)

Linux は現在最も広く使用されているサーバー オペレーティング システムです。Unix をベー...

Linux環境でよく使われるMySQLコマンドの紹介

mysql コマンドを入力します: mysql -u+(ユーザー名) -p+(パスワード) mysq...

CocosCreator ソースコードの解釈: エンジンの起動とメインループ

目次序文準備行く!文章プロセスを開始するメインループまとめ要約する序文準備皆さんは、こんなことを考え...

入力スクリプトなしでタイプ拡張を使用する方法

序文JS の型付けが弱く、記述基準が緩く、開発ツールのサポートが弱いため、前任者のコードをメンテナン...

ウェブデザインのためのオンライン開発ツール10選の紹介

1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...