方法: 1. 「'% string%' のようなフィールドがあるテーブル名」を使用してクエリ; 2. 「find_in_set (文字列, フィールド) のテーブル名」を使用してクエリ; 3. 「テーブル名 where '% string%'" のようなフィールドをクエリに使用し、locate(string,field)" クエリを実行します。
このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。
MySQL で特定の文字列に特定の文字列が含まれているかどうかを判断する 3 つの方法をまとめます。
まず、趣味で yanggb を使用してユーザー テーブルにレコードをクエリするなど、簡単なシナリオを考えてみましょう。
方法 1: ワイルドカード文字 % を使用します。
ワイルドカードもあいまいマッチングであり、先頭あいまいクエリ、末尾あいまいクエリ、および先頭全体一致クエリに分けることができ、特定の文字列に別のあいまいクエリが含まれているかどうかをクエリするシナリオに適しています。 。
select * from user where hobby like '%yanggb%';
使用シナリオは、趣味 (趣味はカンマで区切られた複数の値) の yanggb に存在するレコードの検索に限定されますが、その逆はできません。
方法 2: MySQL が提供する文字列関数 find_in_set() を使用します。
MySQL は文字列関数 find_in_set(str1,str2) 関数を提供します。これは、str2 内の str1 の位置インデックスを返すために使用されます。見つかった場合は true (1) を返し、それ以外の場合は返します。 false ( 0)。str2 は半角カンマ [,] で区切る必要があります。
select * from user where find_in_set('yanggb', hobby);
一致する文字列が最初のパラメータとして使用される場合、該当するシナリオは、趣味で yanggb のレコードを検索することです (趣味はカンマで区切られた複数の値です)。
select * from user where find_in_set(hobby, 'yanggb1,yanggb2,yanggb3');
一致した文字列が 2 番目のパラメーターとして使用される場合、該当するシナリオは、趣味 (趣味は単一の値) に yanggb1、yanggb2、yanggb3 のいずれかを含むレコードを検索することです。
方法 3: MySQL が提供する文字列関数locate() 関数を使用します。
MySQL には、文字列関数locate(substr, str) 関数も用意されており、str 内の substr の位置インデックスを返すために使用されます。見つかった場合は 0 より大きい数値を返し、それ以外の場合は 0 を返します。 0 を返します。
select * from user where locate('yanggb', hobby) > 0;
該当するシナリオは find_in_set() 関数に似ています。2 つの関数の唯一の違いは戻り値です。
推奨学習:mysql ビデオ チュートリアル
以上がmysqlに含まれる文字列をクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。