MySQLフィールド一致LIKEと正規表現補足《MySQL必知必会》8、9章

3668 ワード

likeマッチング/ブラーマッチング
キーワード:LIKE(NOT LIKE)式:WHEREフィールド名LIKEマッチング句(文字列)
%:任意の0文字以上を表します.任意のタイプと長さの文字を一致させることができます.中国語の場合は、2つのパーセント(%%)で表します._:任意の文字を表します.式の文字長文を制限するためによく使用される単一の任意の文字に一致します.
'%a'     // a     
'a%'     // a     
'%a%'    //  a   
'_a_'    //        a 
'_a'     //        a 
'a_'     //        a 

正規表現の一致
キーワード:REGEXP(NOT REGEXP)式:WHEREフィールド名REGEXPマッチ句(文字列)
オプション
説明

一致値の例
^
一致テキストの開始文字
「^b」は、アルファベットbで始まる文字列に一致する
book、big、banana、 bike
$
テキストに一致する終了文字
'st$'はstで終わる文字列に一致します
test、resist、persist
.
任意の文字に一致
'b.t'は、任意のbとtの間に1つの文字を一致させる
bit、bat、but、bite
?
0文字または1文字の一致
'ba?t’は、任意のbとtの間に0文字または1つのa文字が一致する
bt、bat
*
0文字以上前の文字に一致
'f*n’マッチング文字nの前に任意の文字fがある
fn、fan、faan、abcn
+
1つ以上の文字の前に一致する文字
'ba+'マッチングはbで始まり、後ろには少なくとも1つのaが続く.
ba、bay、bare、battle
文字列
指定した文字を含むテキストの一致
'fa’
fan、afa、faad
[文字列]
一致する文字列のいずれかの文字
'[xz]'はxまたはzに一致する
dizzy、zebra、x-ray、 extra
[^文字列]
かっこにない文字を一致させる
'[^abc]'は、a、b、またはcを含まない文字列に一致します.
desk、fox、f8ke
文字列{n}
前の文字列と一致するn回
b{2}マッチング2個
bb、abb
文字列{n,}
前の文字列に少なくともn回一致する
b{2,}は2つ以上のbに一致する
bbb、 bbbb、 bbbbbbb
文字列{,m}
前の文字列に一致する文字列は少なくとも0回、最大m回です.
b{2,}は2つ以上のbに一致する
bbb、 bbbb、 bbbbbbb
文字列{n,m}
前の文字列に一致する文字列は少なくともn回、最大m回です.
b{2,4}マッチングは最低2個、最大4個b
bbb、 bbbb
|
または
「^[aeiou]|ok$」マッチングは、アクセント文字で始まるか、「ok」文字列で終わる
aaa、bok
(…)
複数の文字を1つの全体として一致させる
'(do)*'は0個以上のdoに一致する
dodox、dododo
注意:
  • []一致集合「[123]」は、集合区間を指定する「[1-3」と書くこともできる.例えば、「[a-z]」は集合区間がa-zであるアルファベットを表し、「[0-9]」は集合区間がすべての数字であることを表し、「[a-z 0-9]」は集合区間がa-zであるアルファベットと0-9である数字
  • を表す.
  • 最後の()のコマンドは、()を使用しない場合はすべて単一の文字が一致することを意味し、複数の文字を1つの全体として一致させる必要がある場合は、複数の文字を()で囲む
  • を使用する必要があります.
  • MySQLで正規表現は大文字と小文字を区別せず、区別するにはBINARYキーワードを使用する必要があり、SELECT‘dxx’REGEXP‘Dx’結果は1(TRUE)、SELECT‘dxx’REGEXP BINARY‘Dx’結果は0
  • である.
  • ?の用法:1.よく使われる非貪欲なマッチングPattern*はいくつありますか?何度も繰り返しますが、できるだけ繰り返し+を少なくしますか?1回以上繰り返すが、できるだけ繰り返さない??0回か1回繰り返しますが、できるだけ{n,m}?nからm回繰り返しますが、できるだけ{n,}?n回以上繰り返すが、できるだけ少なく繰り返す.(mysqlではないようですが、間違えて報告)?=exp、マッチングするコンテンツの後ろにexp?<=exp、一致する内容の前はexp?!exp、一致する内容の後ろはexpではありませんか??expは、expに一致し、名前がnameのグループにテキストをキャプチャします.(?'name'exp)?:exp、一致exp、一致するテキストを取得せず、このパケットにグループ番号
  • を割り当てない
    一致文字クラス(Posix文字クラス)
    使用する場合は、[:digit:]]のように、外側に[]を付ける必要があります.
    クラス#クラス#
    説明
    [:alnum:]
    任意のアルファベットと数字([a-zA-Z 0-9]と同じように漢字もマッチします)
    [:alpha:]
    任意のアルファベット([a-zA-Z]と同じように漢字もマッチします)
    [:blank:]
    スペースとタブ(同[t])
    [:cntrl:]
    ASCII制御文字(ASCII 0~31、127)
    [:digit:]
    任意の数(同じ[0-9])小数点から始まる数:[0-9.](または[:digit:].])
    [:graph:]
    [[:print:]]と同じですが、スペースは含まれません.
    [:lower:]
    任意の小文字([a-z]と同じで、漢字もマッチします)
    [:print:]
    任意の印刷可能文字
    [:punct:]
    すなわち[::alnum:]]でも[::cntrl:]]でもない文字
    [:space:]
    スペースを含む任意の空白文字(同[frtv])
    [:upper:]
    任意の大文字([A-Z]と同じで、漢字もマッチします)
    [:xdigit:]
    任意の16進数(同[a-fA-F 0-9])
    [:<:>
    語の始まり
    [:>:]
    語の末尾
    例:SELECT‘dx’REGEXP’[::alnum:]]’出力が1(TRUE)