ホームページ >データベース >mysql チュートリアル >mysql での正規表現を使用した検索と一致に関するチュートリアル (2)
または一致
2 つの文字列 (この文字列または他の文字列のいずれか) のいずれかを検索するには、以下に示すように | を使用します:
入力:
select prod_name from products where prod_name regexp '1000|2000' order by prod_name;
出力:
分析:ステートメントでは正規表現 1000|2000 が使用されています。 | は正規表現の or 演算子です。どちらかに一致すると書かれているので、1000 と 2000 の両方が一致して返されます。
| の使用は、select ステートメントでの or ステートメントの使用と機能的に似ています。複数の or 条件を 1 つの正規表現に結合できます。
注: 2 つ以上の or 条件を指定できます。たとえば、「1000|2000|3000」は 1000、2000、または 3000 に一致します。
は複数の文字の 1 つと一致します。
は任意の 1 文字と一致します。しかし、特定の文字のみを一致させたい場合はどうすればよいでしょうか?
これは、以下に示すように、[and] で囲まれた一連の文字を定式化することで実行できます:
入力: select prod_name from products where prod_name regexp '[123] Ton' order by prod_name;
出力:
分析: ここでは、正規表現 [123]Ton が使用されています。 [123] は、1、2、または 3 の一致を意味する文字のセットを定義します。したがって、1ton と 2ton の両方が一致して返されます (3ton はありません)。
ご覧のとおり、[] は or ステートメントの別の形式です。実際、正規表現 [123]Ton は [1|2|3]Ton の略称であり、後者も使用できます。ただし、[] は or ステートメントが何を探しているのかを定義するために必要です。これをよりよく理解するには、次の例を参照してください。
入力:
select prod_name from products where prod_name regexp '1|2|3 Ton‘ order by prod_name;
出力:
分析: これは予期された出力ではありません。要求された 2 つの行は取得されましたが、さらに 3 つの行が取得されました。その理由は、MySQL が「1」、「2」、または「3ton」を意味すると想定しているためです。文字 | がセットに展開されない限り、文字列全体に適用されます。
文字セットは否定することもできます。つまり、指定された文字以外のすべてに一致します。文字セットを無効にするには、文字セットの先頭に ^ を置きます。したがって、[123] は文字 1、2、または 3 に一致しますが、[^123] はそれらの文字以外の文字に一致します。
一致範囲
コレクションを使用して、一致する1つ以上の文字を定義できます。たとえば、ラインとポリゴンのコレクションは 0 ~ 9 の数字に一致します:
[123456789]
このタイプのコレクションを簡素化するには、 - を使用して範囲を定義します。次の式は、上記の数値リストと機能的に同等です:
[0-9]
範囲は完全なセットに限定されず、[1-3] と [6-9] も有効な範囲です。さらに、範囲は数値のみである必要はなく、[a-z] は任意のアルファベット文字に一致します。
例:
入力:
select prod_name from products where prod_name regexp '[1-5] Ton’ order by prod_name;
出力:
分析: ここでは正規表現 [1-5]Ton が使用されます。 [1-5] は範囲を定義します。この式は 1 ~ 5 に一致することを意味するため、一致する 3 行が返されます。 5ton が一致するため、.5ton が返されます。
【関連する推奨事項】
1. mysql での正規表現を使用した検索と一致のチュートリアル
2. 3. 2016 年の最新の MySQL 基本ビデオ チュートリアルysqlで正規表現を使用した検索と一致のチュートリアル (3)以上がmysql での正規表現を使用した検索と一致に関するチュートリアル (2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。