カンマで区切られたmysqlの分割関数の実装

カンマで区切られたmysqlの分割関数の実装

1: 文字列を区切るためのストアドプロシージャを定義する

区切り文字 $$
`mess`$$ を使う
存在する場合はプロシージャを削除します `splitString`$$
CREATE DEFINER=`root`@`%` PROCEDURE `splitString`(IN f_string VARCHAR(1000),IN f_delimiter VARCHAR(5))
始める  
  cnt INT をデフォルト 0 として宣言します。  
  i INT DEFAULT 0 を宣言します。  
  SET cnt = func_get_splitStringTotal(f_string,f_delimiter);  
  `tmp_split` が存在する場合はテーブルを削除します。  
  一時テーブル `tmp_split` を作成します (`val_` VARCHAR(128) NOT NULL) DEFAULT CHARSET=utf8;  
  i < cnt の場合  
  する  
    i = i + 1 を設定します。  
    tmp_split(`val_`) VALUES (func_splitString(f_string,f_delimiter,i)) に INSERT します。  
  終了しながら;  
終わり$$
区切り文字 ;

2: func_get_splitStringTotal 関数を実装します。この関数は、分離後の長さを計算するために使用されます。ここで知っておく必要がある関数は次のとおりです。

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

文字列 str のすべての出現箇所を文字列 to_str に置き換えた文字列を返します。REPLACE() は、from_str の検索時に大文字と小文字を区別した一致を実行します。
例えば:
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
    -> 'WwWwWw.mysql.com'

具体的な実装:

区切り文字 $$

`mess`$$ を使う

`func_get_splitStringTotal`$$ が存在する場合は関数を削除します

CREATE DEFINER=`root`@`%` FUNCTION `func_get_splitStringTotal`(  
f_文字列 VARCHAR(10000)、f_区切り文字 VARCHAR(50)  
) はINT(11)を返します。
始める  
 1+(LENGTH(f_string) - LENGTH(REPLACE(f_string,f_delimiter,'')) を返します。  
終わり$$

区切り文字 ;

3: func_splitString 関数を実装します。これは、分離後の各ループの値を取得するために使用されます。ここで知っておく必要がある関数は次のとおりです。

(1) 逆(str)

文字の順序を逆にした文字列 str を返します。
たとえば、mysql> SELECT REVERSE('abc');
    -> 'cba'

(2)
SUBSTRING_INDEX(文字列、区切り文字、カウント)


文字列 str から、区切り文字 delim が count 回出現する前の部分文字列を返します。count が正の場合、最後の区切り文字の左側 (左から数えて) にあるすべての文字列が返されます。count が負の場合、最後の区切り文字の右側 (右から数えて) にあるすべての文字列が返されます。SUBSTRING_INDEX() は、delim を検索するときに大文字と小文字を区別して一致を実行します。

例えば:
mysql> SUBSTRING_INDEX('www.mysql.com', '.', 2)を選択します。
    -> 'www.mysql'
mysql> SUBSTRING_INDEX('www.mysql.com', '.', -2)を選択します。
    -> 'mysql.com'

具体的な実装:

区切り文字 $$

`mess`$$ を使う

`func_splitString`$$ が存在する場合は関数を削除します

CREATE DEFINER=`root`@`%` FUNCTION `func_splitString`( f_string VARCHAR(1000),f_delimiter VARCHAR(5),f_order INT) RETURNS VARCHAR(255) CHARSET utf8
始める  
  結果をVARCHAR(255) DEFAULT ''と宣言します。  
  結果 = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(f_string,f_delimiter,f_order)),f_delimiter,1)); を設定します。  
  結果を返します。  
終わり$$

区切り文字 ;

使用:

(1)ストアドプロシージャの呼び出し:

splitString('1,3,5,7,9',','); を呼び出します。

(2)一時テーブルを表示する

val_ を tmp_split から t1 として選択します。

結果:


これで、カンマ区切りのmysql split関数の実装に関するこの記事は終わりです。より関連性の高いmysql split カンマ区切りのコンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL ストアド プロシージャの実装の分割例
  • MySQL で SPLIT のような文字列分割関数を実装する
  • mysql関数splitの実装

<<:  Docker での Tomcat インストールの 404 問題の解決方法

>>:  CentOS7.5 MySQLのインストールチュートリアル

推薦する

HTML テーブルタグチュートリアル (7): 背景色属性 BGCOLOR

テーブルの背景色は、BGCOLOR 属性を通じて設定できます。基本的な構文<テーブル BGCO...

Dockerバッチコンテナオーケストレーションの実装

導入Dockerfile ビルドの実行は、単一のコンテナの手動操作です。マイクロサービス アーキテク...

Apache ソースコードのインストールと仮想ホストの設定に関する詳細なチュートリアル

ソースからApacheをインストールする1. Apacheソースコードをアップロードして必要なソフト...

LinuxにNginxをインストールする詳細な手順

1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...

Mysqlマスタースレーブ同期の実装原理

1. MySQL マスター/スレーブ同期とは何ですか?マスター データベースのデータが変更されると、...

vue3+ts+EsLint+Prettier 標準コード実装

目次使用EsLintの使用プロフィールを追加するPrettierの使用huskyとlint-stag...

MySQL 5.7.18のインストール方法とMySQLサービスの起動手順の詳細な説明

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

DockerコンテナのIPアドレスを取得する方法の詳細な説明

1.コンテナに入った後 /etc/hosts を cat するコンテナ自体の IP アドレスと (-...

MySQL インデックスの失敗を引き起こす一般的な書き込み方法の概要

序文最近、古いプロジェクトから残ったいくつかの SQL 最適化の問題に対処するのに忙しくしています。...

MySQL 8.0.20でNavicatをインストールして接続する方法と注意すべき点

注意事項1. まず、mysql インストール ディレクトリに次の内容の my.ini ファイルを作成...

VUE+Canvasはデスクトップピンボールブロック破壊ゲームのサンプルコードを実装します

誰もがピンボールやレンガ崩しのゲームをプレイしたことがあるでしょう。左と右のキーを使用して、下にある...

Dockerコンテナの状態変換の実装

Dockerコンテナの状態遷移図2度目の実戦 [root@localhost ~]# docker ...

MySQL インデックス最適化の説明

日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...

Vue は、デスクトップから Web ページにファイルをドラッグするためのサンプル コードを実装します (画像/オーディオ/ビデオを表示できます)

効果使用する場合は、コードとスタイルを自分で最適化してください。画像を表示しない/ビデオとオーディオ...

MySQL Workbenchのダウンロードと使用方法のチュートリアルの詳細な説明

1. MySQL WorkbenchをダウンロードするWorkbench は、MySQL のグラフィ...