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

推薦する

VueはEChartsを使用して折れ線グラフと円グラフを実装します

バックエンド管理プロジェクトを開発する場合、バックエンドのユーザーデータをカウントし、折れ線グラフや...

Vue.jsで実装されたカレンダープラグインの使い方を詳しく説明します

本日実装する機能は、以下の機能です。vue.js シミュレーションカレンダープラグインさて、もう無駄...

WeChatアプレットコンポーネント開発:視覚的な映画座席選択機能

目次1. はじめに1. コンポーネントデータ2. コンポーネントページのレイアウト1. ロゴエリアの...

Python の MySQL データベース LIKE 演算子の詳細な説明

LIKE 演算子は、列内の指定されたパターンを検索するため、WHERE 句で使用されます。文法: 列...

Vueはスクロールロードテーブルを実装します

目次成果を達成する転がり荷重知識備蓄コンポーネントのパッケージ1. コンポーネントの命名2. 小道具...

HTML ページ共通スタイル (推奨)

以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピーbody、di...

CentOS7でXShellとネットワーク設定を接続する方法

1. Linuxネットワーク構成ネットワークを構成する前に、まずローカル IPv4 アドレスやデフォ...

Mysql 更新マルチテーブル共同更新方法の概要

次に、2 つのテーブルを作成し、一連の SQL 文を実行します。SQL 文の実行後にテーブル内のデー...

エレメントアバターアップロード練習

この記事は、Element公式サイトとQiniu Cloud公式サイトを使用しています。 eleme...

エラー 1045 (28000): ユーザー ''root''@''localhost'' のアクセスが拒否されました (パスワード使用: YES) 実用的な解決策

昨日はデータベースへの接続に問題はありませんでしたが、今日はデータベースへの接続時にこのエラーが報告...

Vue3 ミックスインの使い方

目次1. mixin の使い方は? 2. ミックスイン使用時の注意2.1. ミックスイン オブジェク...

HTML でナンバープレート番号と州の略語を入力するためのサンプルコード

原理としては、まずボタン付きの div を記述し、次に画面のサイズに応じて自動的に適応してキーボード...

MySQL-8.0.26 構成グラフィックチュートリアル

はじめに: 最近、会社のプロジェクトでデータベースのバージョンが変更されました。ここでは、MySQL...

vue cli3は環境ごとにパッケージ化の手順を実装します

cli3 でビルドされた vue プロジェクトは、ゼロ構成ファイルとして知られています。パッケージ化...

グループフィールドを 1 行に書き込むための mysql group_concat メソッドの例

この記事では、MySQL group_concat を使用してグループ化されたフィールドを 1 つの...