特定のフィールドをクエリするとき、特定のデータ部分のみを一致させたい場合があります。たとえば、この記事のすべてのキーワードをクエリして、特定のデータが一致するかどうかを確認したい場合です。キーワードが存在する場合、多くの場合、マッチングが必要になります。特定のキーワード値をマッチングしてクエリする方法を説明しましょう。
SQL ファジー クエリの構文は、
"SELECT 列 FROM テーブル WHERE 列 LIKE ';パターンです。 「;」。
SQL には 4 つの一致モードがあります:
1. % は 0 個以上の任意の文字を表します。次のステートメント:
SELECT * FROM user WHERE name LIKE ';%三%';
は、名前を「Zhang San」、「Three-legged Cat」、「Tang Sanzang」に変更します。 " など。"three" を含むすべての文字を検索します。
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 San」、「Li San」、「Wang San」 (および"Zhang Li Wang San");
[ ] に一連の文字 (01234、abcde など) が含まれる場合、「0-4」、「a-e」と省略できます
SELECT * FROM user WHERE name LIKE ';老[1-9]';
は "old 1"、"old 2"、...、"old 9";
## を検索します。 # 「-」文字を検索したい場合は、最初に入力してください: ';Zhang San[-1-9]';4. [^ ] は、括弧内にリストされていない単一の文字を意味します。ステートメント: SELECT * FROM user WHERE name LIKE ';[^Zhang Liwang]三'; は、姓が「Zhang」、「Li」、または「Wang」ではない「」を検索します" Zhao San"、"Sun San" など; SELECT * FROM user WHERE name LIKE ';老[^1-4]'; から "老1" は除外されます"老4 "「老5」、「老6」、...、「老9」を探してください。 !最後がポイントです! ワイルドカードのため、特殊文字「%」、「_」、「[」、および「';」のクエリ ステートメントは通常は実装できません。特殊文字を「[ ]」で囲むと便利です。 「普通に問い合わせできます。これに基づいて、次の関数を作成します。 function sqlencode(str)str=replace(str,"';","';';")str =replace(str,"[","[[]") ';この文は最初に来る必要がありますstr=replace(str,"_","[_]")str=replace(str,"%","[%]")sqlencode=strend function以上がmysqlの特定のフィールドに対する通常の一致するファジークエリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。