php+mysqlのファジークエリ機能はPHPがデータベースを操作する上で非常に重要です。この記事ではその関連知識を詳しく説明します。
一般的なファジークエリステートメントは次のとおりです:
SELECT フィールド FROM テーブル WHERE 特定のフィールド Like 条件
その中で、SQL には 4 つのマッチング モードがあります:
1、%: 0 個以上の任意の文字を表します。任意のタイプおよび長さの文字に一致します。場合によっては、中国語の場合は 2 つのパーセント記号 (%%) を使用して表現してください。
たとえば、SELECT * FROM [user] WHERE u_name LIKE '%三%'
は、u_name を持つレコードを「Zhang San」、「Zhang Cat San」、「Three-legged Cat」、「Tang Sanzang」などとして記録します。全部見つけてください。
さらに、u_name に「三」と「猫」の両方を含むレコードを検索する必要がある場合は、and 条件を使用してください
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%cat% '
SELECT * FROM [user] WHERE u_name LIKE '%三%cat%' を使用した場合
「三本足の猫」は検索できますが、条件を満たす「張猫三」は検索できません。
2,_: 任意の 1 文字を表します。単一の任意の文字と一致します。これは、式ステートメントの文字長を制限するためによく使用されます:
たとえば、SELECT * FROM [user] WHERE u_name LIKE '_三_'
「Tang Sanzang」のみを検索します。 u_name は 3 文字で、真ん中の文字は「三」です。
別の例は、SELECT * FROM [user] WHERE u_name LIKE '三';です。
名前が 3 文字で最初の文字が含まれるように、「three-legged cat」のみを検索します。文字は "三" ;
3, [ ]: 括弧内にリストされた文字の 1 つを表します (正規表現と同様)。文字、string、または範囲を指定し、一致するオブジェクトがそれらのいずれかであることを要求します。
たとえば、 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] '
will Find "Old 1", "Old 2", ..., "Old 9";
4, [^]: 括弧内にリストされていない 1 つの文字を表します。その値は [] と同じですが、一致するオブジェクトが指定された文字以外の文字である必要があります。
たとえば、 SELECT * FROM [user] WHERE u_name LIKE '[^Zhang Liwang]三'
とすると、姓が「Zhang」、「Li」、「」ではない「Zhao San」、「Sun San」などが検索されます。 Wang";
SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
は、「古い 1」から「古い 4」を除外し、「古い 5」、「古い 6」を検索します。 ..
5、クエリのコンテンツに ワイルドカード
が含まれている場合、ワイルドカードのため、特殊文字「%」、「_」、および「[」のクエリは正常に実装できません。また、特殊文字は「[ ]」で囲むと通常通りクエリできます。これに基づいて、次の関数を作成しました:
function sqlencode(str) str=replace(str,"[","[[]") '此句一定要在最前 str=replace(str,"_","[_]") str=replace(str,"%","[%]") sqlencode=str end function
この記事では、php+mysql のファジー クエリ関数について説明します。詳細については、php 中国語 Web サイトを参照してください。
関連する推奨事項:
以上がphp+mysqlのファジークエリ関数に関する関連知識の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。