PostgreSQL でのパターン マッチングのための文字列のエスケープ
ユーザー指定の文字列に % などの特殊なパターン文字が含まれる可能性がある PostgreSQL でパターンを正確に一致させるには、正確に一致するように、これらの文字をエスケープすることを検討してください。あるいは、アプリケーションでエスケープ処理を処理することもできます。
PostgreSQL では、% や _ などの文字は を使用して引用符で囲む必要がありますが、これは ESCAPE 句でカスタマイズできます。文字を文字通り一致させるには、引用符を 2 回付ける必要があります。
たとえば、エスケープ文字として ^ を使用してパターン 'john%node1^node2.uucp@' を一致させるには、次のクエリを使用します。
... WHERE field LIKE 'john^%node1^^node2.uucp@%' ESCAPE '^'
ただし、standard_conforming_strings が無効になっている場合 (PG 9.1 ではデフォルトで有効になっています)、他の目的に利用されます。さらに、注入シナリオではクライアント側の引用符が必要になる場合があります。
Go での一般的な処理では、standard_conforming_strings と代替引用符文字の両方を考慮して、次のクエリを使用できます。
db.Query("SELECT * from USERS where name like replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'", variable_user_input);
Thisサーバー側で特殊文字のエスケープと置換を処理し、SQL インジェクションを防止し、正確なパターン マッチングを保証します。
以上がPostgreSQL で正確なパターン マッチングを行うために特殊文字をエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。