MySql カンマ連結文字列クエリの 2 つの方法

MySql カンマ連結文字列クエリの 2 つの方法

次の2つの関数は、 FIND_IN_SETと同じように使用されます。使用する場合、 FIND_IN_SET FIND_PART_IN_SETまたはFIND_ALL_PART_IN_SETに置き換えるだけです。

例えば、フィールドは1、2、3、4、5

方向:

最初のものは1、3、6を渡して調べます

FIND_PART_IN_SET('1,3,6','1,2,3,4,5') で XXX から * を選択

2番目のタイプは1、3、6を通過しますが、見つかりません

FIND_ALL_PART_IN_SET('1,3,6','1,2,3,4,5') で XXX から * を選択

関数:

1つ目のタイプ:いずれか1つが含まれていれば検出可能

CREATE DEFINER = `root`@`%` FUNCTION `NewProc`(str1 テキスト、str2 テキスト)
 戻り値テキスト
始める
 # カンマで区切られた 2 つの文字列を渡し、最初の文字列を分割した後の 1 つの文字が 2 番目の文字列に含まれているかどうかを判断します。DECLARE CURRENTINDEX INT; # 現在の添え字 DECLARE CURRENTSTR text;
結果を int として宣言します。
結果を 0 に設定します。
CURRENTINDEX = 0 を設定します。
CURRENTSTR = '' を設定します。
str1がNULLでなく、str1 != ''の場合
 SET CURRENTINDEX = LOCATE(',',str1);
 CURRENTINDEX > 0 の場合
 SET CURRENTSTR = 部分文字列(str1,1,CURRENTINDEX-1);
 FIND_IN_SET(CURRENTSTR,str2)の場合
  結果を 1 に設定します。
 終了の場合;
 SET str1 = サブ文字列(str1,CURRENTINDEX+1);
 SET CURRENTINDEX = LOCATE(',',str1);
 終了しながら;
 #1つだけ渡し、最後にカンマは入れない IF LENGTH(str1) > 0 THEN
 FIND_IN_SET(str1,str2)の場合
  結果を 1 に設定します。
 終了の場合;
 終了の場合;
終了の場合;
結果を返します。
終わり;

2番目のタイプ: 検出するにはすべてを含める必要がある

CREATE DEFINER = `root`@`%` FUNCTION `NewProc`(str1 テキスト、str2 テキスト)
 戻り値テキスト
始める
 # 2 つのコンマ区切りの文字列を渡して、最初の文字列を分割した後の単一の文字がすべて 2 番目の文字列に含まれているかどうかを判断します。DECLARE CURRENTINDEX INT; # 現在の添え字 DECLARE CURRENTSTR text;
結果を int として宣言します。
TOTALCOUNT int を宣言します。
TRUECOUNT int を宣言します。
RESULT = 0 を設定します。
CURRENTINDEX = 0 を設定します。
CURRENTSTR = '' を設定します。
TOTALCOUNT = 0 に設定します。
TRUECOUNT = 0 に設定します。
str1がNULLでなく、str1 != ''の場合
 SET CURRENTINDEX = LOCATE(',',str1);
 CURRENTINDEX > 0 の場合
 合計カウントを合計カウント + 1 に設定します。
 SET CURRENTSTR = 部分文字列(str1,1,CURRENTINDEX-1);
 FIND_IN_SET(CURRENTSTR,str2)の場合
  TRUECOUNT = TRUECOUNT + 1 を設定します。
 終了の場合;
 SET str1 = サブ文字列(str1,CURRENTINDEX+1);
 SET CURRENTINDEX = LOCATE(',',str1);
 終了しながら;
 #1つだけ渡し、最後にカンマは入れない IF LENGTH(str1) > 0 THEN
 合計カウントを合計カウント + 1 に設定します。
 FIND_IN_SET(str1,str2)の場合
  TRUECOUNT = TRUECOUNT + 1 を設定します。
 終了の場合;
 終了の場合;
終了の場合;
TOTALCOUNT > 0 かつ TRUECOUNT = TOTALCOUNT の場合 
 結果 = 1 を設定します。
終了の場合;
結果を返します。
終わり;

要約する

上記は、編集者が紹介したMySqlコンマ連結文字列クエリの2つの方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Mysql 文字列の傍受と指定された文字列内のデータの取得
  • MySQLは文字列関数のSQL文をインターセプトします
  • MySQLは文字列の連結、インターセプション、置換、位置検索操作を実装しています

<<:  Linux seqコマンドの使い方の詳しい説明

>>:  Vueはスライダードラッグ検証機能の全プロセスを実現します

推薦する

CentOS7におけるKVM仮想化の基本管理の詳しい説明

1. kvm仮想化をインストールする : : : : : : : : : : : : : : : :...

CSS 属性値 clear:right が機能しない理由の詳細

clear プロパティを使用してフロートをクリアすることはよくあることであり、clear プロパティ...

Linux の PHP に XML 拡張機能をインストールする詳細な手順

PHP Linux に XML 拡張機能をインストールする1. PHPインストールソースパッケージを...

組み込み Linux 開発環境で ping と nfs を構築するためのソリューション

1. 組み込みソフトウェアレベル 1) ブートローダ -> ブートローダ組み込みシステム全体の...

BootStrap グリッド間に隙間を残す解決策

目次[例を見る]: 【本来の効果は以下の通り】理由は次のとおりです。 【解決】:要約するBootSt...

Ubuntu Linuxシステムをインストールするときにハードディスクをパーティション分割する最も合理的な方法の詳細な説明

Windows または Linux オペレーティング システムをインストールするかどうかに関係なく、...

Ubuntu 20.04でルートアカウントを有効にする方法

Ubuntu 20.04 をインストールした後、デフォルトでは root アカウントのログイン権限が...

CSSにおけるマージン値と垂直マージンの重なりについて

平行ボックスの余白 (二重余白の重なり) に関する面接の質問: 1 つのボックスに上余白があり、もう...

MySQLとOracleのメタデータ抽出例分析

目次序文メタデータとは参照文書アドレスまずはMySQLについてお話しましょうOracleについて話し...

Vue カプセル化に基づくプルダウン更新およびプルアップ読み込みコンポーネント

VueとネイティブJavaScriptカプセル化に基づいて、プルダウンリフレッシュとプルアップロード...

この記事では、jsのデータ型とデータ構造の世界を紹介します。

目次1. 動的型付けとは何ですか? 2. データ型2.1 プリミティブ型 (6 つのプリミティブ型、...

Docker の MySQL 時間とシステム時間の不一致の問題を解決する

最近、Docker に MySQL をインストールしたところ、データベースの時刻がシステム時刻と 8...

MySQLのグループカウントと範囲集計を実装する2つの方法

1つ目:通常動作 選択 SUM(ddd) AS count_days、 場合 aa.days >...

Js の継承とプロトタイプチェーンを理解するのに役立つ記事

目次継承とプロトタイプチェーン継承されたプロパティ継承されたメソッドJavaScript でのプロト...