SQL ファジー クエリ ステートメント
一般的なファジー ステートメントの構文は次のとおりです。
SELECT 字段 FROM 表 WHERE 某字段 Like 条件
条件について, SQL が提供する 4 つの一致モードがあります:
1, %: 0 個以上の任意の文字を表します。任意の種類および長さの文字に一致します。場合によっては、中国語の場合は 2 つのパーセント記号 (%%) を使用して表現してください。
SELECT * FROM [user] WHERE u_name LIKE '%三%'
は、u_name に「3」を含むすべてのレコードを「Zhang San」、「Zhang Cat San」、「Three-legged Cat」、「Tang Sanzang」などとして検索します。また、u_name に「三」と「猫」の両方が含まれるレコードを検索する必要がある場合は、and 条件を使用してください。
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
を使用すると、検索できます。 「三级「猫」」で検索しましたが、「張猫三」で条件に合う検索は見つかりませんでした。
2, _: は任意の 1 文字を表します。単一の任意の文字と一致します。これは、式の文字長を制限するためによく使用されます:
SELECT * FROM [user] WHERE u_name LIKE '_三_'
u_name が 3 文字で中央の文字が「三」になるように、「Tang Sanzang」のみを検索します。 " ;
SELECT * FROM [user] WHERE u_name LIKE '三__';
名前が 3 文字で最初の文字が「三」である「三本足の猫」のみを検索します。;
3. [ ] : は、括弧内にリストされた文字の 1 つを表します (正規表現と同様)。文字、文字列、または範囲を指定し、一致するオブジェクトがそれらのいずれかである必要があります。
SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
は、(「Zhang Li Wang San」ではなく) 「Zhang San」、「Li San」、「Wang San」を検索します。
[ ] など一連の文字 (01234、abcde など) がある場合は、「0-4」、「a-e」と省略できます。
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
では、「old 1」、「old 2」が検索されます。 ",... ..., "老9";
4, [^]: 括弧内にリストされていない単一の文字を示します。その値は [] と同じですが、一致するオブジェクトが指定された文字以外の文字である必要があります。
SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
姓が「Zhang」、「Li」、「Wang」ではない「Zhao San」、「Sun San」などを検索します;
SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
「Old 1」から「Old 4」を除外し、「Old 5」、「Old 6」、...を検索します。
5. クエリの内容にワイルドカードが含まれている場合
ワイルドカードのため、特殊文字「%」、「_」、および「[」のクエリ ステートメントは正常に実装できません。ただし、特殊文字は「[ ]」で囲まれていれば正常にクエリできます。 」。これに基づいて、次の関数を作成します。
function sqlencode(str) str=replace(str,"[","[[]") '此句一定要在最前 str=replace(str,"_","[_]") str=replace(str,"%","[%]") sqlencode=str end function
クエリの前に、チェックする文字列をこの関数で処理できます。
PHP 中国語 Web サイトには、無料の SQL チュートリアル が多数あり、誰でも学習することができます。
以上がSQLあいまいクエリ文の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。