ホームページ > バックエンド開発 > Golang > PostgreSQL で正確なパターン マッチングを行うために特殊文字をエスケープする方法

PostgreSQL で正確なパターン マッチングを行うために特殊文字をエスケープする方法

Susan Sarandon
リリース: 2024-11-20 04:30:02
オリジナル
457 人が閲覧しました

How to Escape Special Characters for Accurate Pattern Matching in PostgreSQL?

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 サイトの他の関連記事を参照してください。

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