mysql 特定のフィールドに対する通常の一致するファジー クエリ
特定のフィールドをクエリするとき、場合によっては、特定のデータを照合する必要があります。たとえば、この記事内のすべてのキーワードをクエリして、特定のキーワードが存在するかどうかを確認したい場合は、照合する必要があることがよくあります。特定のキーワード値を照合して照会する方法を説明しましょう
SQL ファジー クエリ 構文は
"SELECT columns FROM table WHERE column LIKE ';pattern';" です。
SQL には 4 つの一致モードがあります:
1. % は 0 個以上の任意の文字を表します。次のステートメント:
SELECT * FROM user WHERE name LIKE ';%三%';
では、「Zhang San」、「Three-legged Cat」、「Tang Sanzang」などの名前が入力されます。
2. _ は任意の 1 文字を表します。ステートメント:
SELECT * FROM user WHERE name LIKE ';_三_';
名前が 3 文字で中央の文字が「三」である「Tang Sanzang」のみを検索します;
SELECT * FROM user WHERE name LIKE ';三__';
名前が 3 文字で最初の文字が「三」である「三本足の猫」のみを検索します;
3. [ ] はリストされている文字の 1 つを意味します括弧内で囲みます (正規表現と同様)。ステートメント:
SELECT * FROM user WHERE name LIKE ';[张李王]三';
では、(「Zhang Li Wang San」ではなく) 「Zhang San」、「Li San」、「Wang San」が検索されます。 ");
[ ] に一連の文字 (01234、abcde など) が含まれる場合、「0-4」、「a-e」と省略できます
SELECT * FROM user WHERE name LIKE '; Old[1-9]';
「old1」、「old2」、...、「old9」が見つかります;
「-」文字を見つけたい場合は、それを最初に入力してください。 ' ;张三[-1-9]';
4. [^ ] は、括弧内にリストされていない単一の文字を表します。ステートメント:
SELECT * FROM user WHERE name LIKE ';[^Zhang Liwang]三';
は、姓が「Zhang」、「Li」、「Wang」ではない「Zhao San」、「Sun」を検索します。 Three" など;
SELECT * FROM user WHERE name LIKE ';Old[^1-4]';
は、「Old1」から「Old4」を除外し、「Old5」、「Old6」、 …、「オールド9」。
!最後がポイントです!
ワイルドカードのため、特殊文字「%」、「_」、「[」、「';」のクエリ ステートメントは通常どおり実装できません。ただし、特殊文字を「[ ]」で囲むことで通常どおりクエリを実行できます。 「。」これに基づいて、次の関数を作成します。
function sqlencode(str)
str=replace(str,"';","';';")
str=replace(str ," [","[[]") ';この文は最初に来る必要があります
str=replace(str,"_","[_]")
str=replace(str,"%", "[%]")
sqlencode=str
end function
推奨チュートリアル: mysql ビデオ チュートリアル
以上が特定のフィールドをクエリするためのmysql正規一致ファジーメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。