カンマで区切られた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のインストールチュートリアル

推薦する

Eclipse と IDEA 用に Tomcat サーバーを構成する方法

tomcat サーバーの構成誰もが Web について学習するときに、自分のツール用に Tomcat ...

JavaScript でドラッグ スライダー パズルの検証機能を実装します (html5、canvas)

導入:スライダー ドラッグ検証は現在、多くの場所で使用されています。週末に 1 つ作成しようと思い、...

Win2008 サーバー セキュリティ チェック手順ガイド (日常のメンテナンス手順)

ドキュメントはしばらく前から書いていましたが、アップロードする勇気がありませんでした。サーバーのセキ...

mysql データはどこに保存されますか?

MySQLデータベースの保存場所: 1. MySQLがMyISAMストレージエンジンを使用する場合...

CSS でテキストカラーグラデーションを実装する 3 つの方法

Web フロントエンド開発のプロセスでは、UI デザイナーはグラデーション テキストを使用したデザイ...

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

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

Web デザイン TabIndex 要素

TabIndex は、Tab キーを押して、定義された TabIndex 要素を順番に取得し、各要素...

Vue のキーボードイベント監視の概要

キー修飾子キーボード イベントをリッスンする場合、詳細なキーを確認する必要があることがよくあります。...

Linuxでのaliasコマンドの使い方の詳細な説明

1. 別名の使用alias コマンドは、コマンドのエイリアスを設定するために使用されます。このコマン...

JavaScript BOM の説明

目次1. BOMの紹介1. JavaScriptは3つの部分から構成される2.ウィンドウオブジェクト...

nginxプロキシsocket.ioサービスの落とし穴の詳細な説明

目次Nginx は 2 つの socket.io サーバーをプロキシします。 socket.ioの動...

JSの高階関数5つを共有する

目次1. はじめに2. 再帰3. コールバック関数3.1 匿名コールバック関数3.2 パラメータ付き...

フラッシュプラグインを使用してPCのカメラを呼び出し、TMLページに埋め込む方法

序文この記事を書いた主な理由は、チームリーダーが、ブラウザを使用してコンピューターのカメラを呼び出し...

Centos7 に mysql と mysqlclient をインストールする際に遭遇する落とし穴の概要

1. MySQL Yumリポジトリを追加するMySQL公式サイト>ダウンロード>MySQ...

Linux calコマンドの使用

1. コマンドの紹介cal (カレンダー) コマンドは、現在の日付または指定された日付のグレゴリオ暦...