以下のエディターは、決まり文句 MYSQLパターン マッチング REGEXP などの使用法を示します。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。エディターをフォローして見てみましょう。
like
likeではデータ全体の一致が必要ですが、REGEXPでは部分的な一致のみが必要です。
言い換えると、Like を使用するには、このフィールドのすべての内容が条件を満たす必要がありますが、REGEXP では条件を満たすために必要なフラグメントは 1 つだけです。
MySQL は、標準 SQL パターン マッチング (類似) に加え、vi、grep、sed などの Unix ユーティリティに基づいた拡張 正規表現パターン マッチング形式 (regexp) を提供します。
SQL パターン マッチングでは、「_」を使用して任意の 1 文字と一致し、「%」を使用して任意の数の文字 (0 文字を含む) と一致させることができます。 MySQL では、SQL モードはデフォルトで大文字と小文字を無視します。いくつかの例を以下に示します。 SQL モードを使用する場合、= または != は使用できないことに注意してください。代わりに、LIKE または NOT LIKE 比較演算子 を使用してください。
「b」で始まる名前を検索するには:
mysql> SELECT * FROM pet WHERE name LIKE "b%"; +--------+--------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +--------+--------+---------+------+------------+------------+ | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | +--------+--------+---------+------+------------+------------+
「fy」で終わる名前を検索するには:
mysql> SELECT * FROM pet WHERE name LIKE "%fy"; +--------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | death | +--------+--------+---------+------+------------+-------+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | +--------+--------+---------+------+------------+-------+
「w」を含む名前を検索するには:
mysql> SELECT * FROM pet WHERE name LIKE "%w%"; +----------+-------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +----------+-------+---------+------+------------+------------+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | +----------+-------+---------+------+------------+------------+
正確に 5 文字を含む名前を検索するには、「_」パターン文字を使用します:
mysql> SELECT * FROM pet WHERE name LIKE "_"; +-------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | death | +-------+--------+---------+------+------------+-------+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | +-------+--------+---------+------+------------+-------+
REGEXP
別のタイプの一致は正規表現に基づいています。このようなパターンの一致をテストする場合は、REGEXP 演算子と NOT REGEXP 演算子 (または同義語である RLIKE と NOT RLIKE) を使用します。
「.」は任意の 1 文字と一致します。
文字クラス「[...]」は、角括弧内の任意の文字と一致します。たとえば、「[abc]」は「a」、「b」、または「c」に一致します。文字範囲に名前を付けるには、「-」を使用します。 「[a-z]」は任意の小文字と一致し、「[0-9]」は任意の数字と一致します。
「 * 」は、その前にある 0 個以上の内容と一致します。たとえば、「x*」は任意の数の「x」文字に一致し、「[0-9]*」は任意の数の数字に一致し、「.*」は任意の数に一致します。
正規表現では大文字と小文字が区別されますが、必要に応じて、文字クラスを使用して両方の記述を一致させることができます。たとえば、「[aA]」は小文字または大文字の「a」と一致し、「[a-zA-Z]」はいずれかの方法で書かれた文字と一致します。
パターンは、テスト対象の値のどこかに出現する場合に一致します (SQL パターンは、値全体と一致する限り一致します)。
テスト対象の値の先頭または末尾に一致するようにパターンを配置するには、パターンの先頭に「^」を使用するか、パターンの末尾に「$」を使用します。
拡張正規表現がどのように機能するかを説明するために、上記の LIKE クエリを REGEXP を使用して以下に書き換えます:
「b」で始まる名前を検索するには、「^」を使用して名前の先頭と一致させ、「 [bB ]" は、小文字または大文字の "b" と一致します:
mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]"; +--------+--------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +--------+--------+---------+------+------------+------------+ | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | +--------+--------+---------+------+------------+------------+
mysql> SELECT * FROM pet WHERE name REGEXP "fy$"; +--------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | death | +--------+--------+---------+------+------------+-------+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | +--------+--------+---------+------+------------+-------+
mysql> SELECT * FROM pet WHERE name REGEXP "[wW]"; +----------+-------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +----------+-------+---------+------+------------+------------+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | +----------+-------+---------+------+------------+------------+
[^...]、w/z の先頭を除くクエリなど、[] に含まれない文字と一致します。 /s 人の名前
select name from 表名 where name regexp '^[^wzs]';
javascriptに慣れている学生は、
'str*' が st/str/strr/strrr... に一致することを知っています。 ?、0 回または 1 回繰り返されます 'str?' は st/str+ と一致します、1 回以上繰り返されます 'str+' は str/strr/strrr/strrr と一致します...と比較JavaScript の正規表現。ここでの正規表現は簡略化されたもので、遅延マッチング/貪欲マッチングはありません。wsd 構文は [] でサポートされておらず、中国語もサポートされていません。比較的単純です。
以上がMYSQL パターン マッチング REGEXP および同様のコード使用法の共有に関する詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。