PostgreSQL LIKE パターンで特殊文字をエスケープする方法

Mary-Kate Olsen
リリース: 2024-11-23 00:22:13
オリジナル
364 人が閲覧しました

How to Escape Special Characters in PostgreSQL LIKE Patterns?

PostgreSQL LIKE パターンでの特殊文字のエスケープ

LIKE パターンでの特殊文字のエスケープは、正確な一致を保証するために重要です。たとえば、名前列が「rob%」などのユーザー指定の文字列で始まる行を検索するシナリオを考えてみましょう。ただし、ユーザー入力に「_」などの特殊文字が含まれている場合は、誤検知が発生します。

エスケープ メカニズム

PostgreSQL では、バックスラッシュ () または ESCAPE 句で指定されたユーザー定義のエスケープ文字。特殊文字を文字通りに一致させるには、それを 2 回エスケープする必要があります。

「rob_」を文字通り一致させるには、次の LIKE パターンを使用します。

WHERE name LIKE 'rob^^%'
ログイン後にコピー

または、エスケープ句を使用して代替エスケープを指定することもできます。文字:

WHERE name LIKE 'rob_%node1^^node2.uucp@%' ESCAPE '^'
ログイン後にコピー

これは、「john%node1^node2.uccp@」の後に任意の文字が続くものと一致します。

考慮事項

  • デフォルトのエスケープ文字はバックスラッシュですが、standard_conforming_strings が有効な場合は他の目的に使用されます。 OFF。
  • 特殊文字のエスケープは、ユーザー入力から構築された動的 SQL ステートメントにも適用されます。この場合、SQL インジェクションを避けるためにサーバー側で実行する必要があります。
  • 変数置換にプレースホルダーを使用すると、両方のことが保証されます。正確なマッチングとセキュリティ。

汎用 SQLステートメント

次に、standard_conforming_strings ON の有無にかかわらず、サーバー側のエスケープ文字置換を使用して使用できる汎用 SQL ステートメントを示します。

SELECT * FROM USERS WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
ログイン後にコピー

以上がPostgreSQL LIKE パターンで特殊文字をエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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