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

推薦する

HTMLフォームアプリケーションにはチェックボックスとラジオボタンの使用が含まれます

チェックボックスやラジオボタンの使用を含むコードをコピーコードは次のとおりです。 <!DOCT...

JS での Reduce Fold Unfold の使用法の詳細な説明

目次折りたたむ(減らす) for...of の使用whileループの使用折り畳み実装に近い展開する配...

js のループメソッドとさまざまなトラバーサルメソッド

目次forループwhileループdo-while ループループのネストトラバーサルメソッド~のために...

$remote_addr に基づく nginx フロントエンド配布方法の詳細な説明

要件は次のとおりです。ドメイン名の下に複数のサーバーがあります。現在、特定の地域をテストしています。...

CentOS で yum を使用して rabbitmq-server をインストールする方法

RabbitMQをインストールする前にSocatをインストールする必要があります。そうしないと、Ra...

MySQLデータを復元する2つの方法

1. はじめに少し前、開発者がテスト環境や本番環境で誤った操作をし、データベースを誤って削除/更新し...

キープアライブキャッシュをクリアする方法の詳細なグラフィック説明

目次オープニングシーンv-for を使用した直接レンダリングカスタムコンポーネントで直接レンダリング...

クラウド決済を実装するWeChatミニプログラムについて

目次1. はじめに2. 思考分析3. クラウド決済のケーススタディ1. クラウド機能1-1. 認証不...

Zabbix はどのようにして ssh 経由でネットワーク デバイス データを監視および取得するのでしょうか?

シナリオシミュレーション:ある会社の運用保守担当者は、以前購入した一連のネットワーク機器の光ポートの...

JavaScript の onblur および onfocus イベントの詳細な説明

HTML ページでは、ボタンやテキスト ボックスなどの視覚要素にフォーカスを設定したり、フォーカスを...

体験したい17 404ページ

404 を避けるべきだとどうして言えるのでしょうか? その理由は、ほとんどの 404 ページが粗雑す...

ノードを使用して静的ファイルキャッシュを実装する方法

目次キャッシュキャッシュ位置の分類キャッシュ設定ヘッダーNodeは静的ファイルキャッシュを実装する強...

ウェブページの広告デザインにおけるウェブデザインの寸法とルール

1. 800*600 未満の場合、Web ページの幅が 778 以内であれば、水平スクロール バーは...

editplus の Zen コーディング例コードの説明

たとえば、次のように入力します。 XML/HTML コードdiv#ページ>(div#ヘッダー&...

WeChat アプレット開発フォーム検証 WxValidate の使用

個人的には、WeChat アプレットの開発フレームワークは VUE と概ね似ていると感じていますが、...