ホームページ > バックエンド開発 > PHPの問題 > PHPのmysqlファジークエリステートメントに問題がありますか?

PHPのmysqlファジークエリステートメントに問題がありますか?

coldplay.xixi
リリース: 2023-03-03 09:34:02
オリジナル
3015 人が閲覧しました

php の Mysql ファジー クエリ ステートメント: 1. [%] は任意の 0 個以上の文字を表し、任意のタイプおよび長さの文字に一致します; 2. [_] は任意の 1 文字を表し、任意の 1 文字に一致します;3. [[]] は文字、文字列、または範囲を指定し、一致するオブジェクトがそれらのいずれかである必要があります。

PHPのmysqlファジークエリステートメントに問題がありますか?

php の mysql ファジー クエリ ステートメントは次のとおりです:

一般的なファジー クエリ ステートメントは次のとおりです:

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」に「3」が含まれるすべてのレコードを検索します。等。

さらに、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 '_三_'
ログイン後にコピー

では「Tang Sanzang」のみが検索されるため、u_name は 3 文字で、中央の文字は"三";

別の例は

 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」を検索します。 ,..., "Old 9";

4, [^]: 括弧内にリストされていない単一の文字を表します。その値は [] と同じですが、一致するオブジェクトが指定された文字以外の文字である必要があります。

たとえば、

SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
ログイン後にコピー

では、「Zhang」、「Li」、「Wang」という名前ではない「Zhao San」、「Sun San」などが検索されます。

クエリの内容にワイルドカードが含まれている場合、

は「Old 1」から「Old 4」を除外し、「Old 5」、「Old 6」、...

5 を検索します。ワイルドカードのため、特殊文字「%」、「_」、「[」のクエリ文は正常に実装できませんが、特殊文字を「[ ]」で囲むことで正常にクエリを実行できます。これに基づいて、次の関数を作成します:

SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
ログイン後にコピー

関連する学習の推奨事項:

PHP プログラミングの入門から熟練度まで

以上がPHPのmysqlファジークエリステートメントに問題がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート