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はスライダードラッグ検証機能の全プロセスを実現します

推薦する

EChartsマウスイベント処理方法の詳細な説明

イベントとは、クリック、マウスオーバー、ページの読み込み後にトリガーされる読み込みイベントなど、ユー...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを 2 回忘れてしまいましたか?最初、私はアンインストールして再インストールす...

MySQL にテキストと画像を保存する方法

Oracle の大きなテキスト データ型 Clob 長いテキスト型 (MySQL ではサポートされて...

MySql でリモート接続を許可する方法

MySql でリモート接続を許可する方法この目標を達成するには、2つのことを行う必要がある。ユーザー...

TypeScript 2.0 マーク付き共用体型の詳細な説明

目次タグ付きユニオン型を使用した支払い方法の構築タグ付きユニオン型を使用した Redux アクション...

CSSはヒントボックス、バブルボックス、三角形を作成します

場合によっては、ページにプロンプ​​ト ボックスやバブル ボックスが必要になることがあります。CSS...

Mysql+JavaSwing に基づくスーパーマーケット商品管理システムの設計と実装

目次1. 機能紹介2. キーコード2.1 ホームページの機能2.2 製品情報を追加する2.3 データ...

CSSでフレックス配置を表示する(レイアウトツール)

display: flex レイアウトに関しては、深く理解している人もいますし、私も他の人の作業か...

Linuxカーネルマクロcontainer_ofの詳細な分析

1. 前述の通り数年前、Linux ドライバーのコードを読んでいたときにこのマクロを見ました。長い間...

iOS スタイルの選択ボックスの開閉機能を実装するための純粋な CSS

1 効果デモアドレス: https://www.albertyy.com/2020/7/check...

Linux でファイアウォールがオフになっているかどうかを確認する方法

1. サービス方法ファイアウォールのステータスを確認します。 [root@centos6 ~]# サ...

Vueは動的に生成されたコンポーネントをドラッグアンドドロップする要件を実装します

目次製品要件アイデア問題ライブラリ選択をドラッグコンポーネントを生成する方法コンポーネントを生成する...

in() の ID の順序に従った Mysql クエリ結果の順序の詳細な説明

in() の ID の順序に従った Mysql クエリ結果の順序の詳細な説明コード例: <se...

CSS スクロールバースタイル変更コード

CSS スクロールバースタイル変更コード .scroll::-webkit-scrollbar { ...