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@」の後に任意の文字が続くものと一致します。
考慮事項
汎用 SQLステートメント
次に、standard_conforming_strings ON の有無にかかわらず、サーバー側のエスケープ文字置換を使用して使用できる汎用 SQL ステートメントを示します。
SELECT * FROM USERS WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
以上がPostgreSQL LIKE パターンで特殊文字をエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。