WHERE table.value LIKE @pattern
文字列パラメーターを取得し、これをクエリの句の一部として使用するストアド プロシージャを使用しています。これが引き起こす危険性についてだれかが口を挟む前に、一連の既知の値の 1 つをパターン パラメータとして使用してプロシージャが呼び出されます。ユーザー入力からこのパラメータへの直接的なパスはありません。
個々のケースでは、これは機能します。私の可能なパターンは次のとおりです。
"RBI-%-TH%N-[AB]-%"
"RBI-%-TH%N-C-%"
"RBI-%-TH%N-D-%"
"RBI-%-VISUAL%"
私が問題に直面しているのは、デフォルトのパターンを設定することで、これらの 4 つすべてをカバーしようとすることです (これtable.value
により、これらのパターンのいずれかに一致するすべてのレコードが選択されますが、それ以外は何も選択されません)。最初の 3 つは十分に簡単"RBI-%-TH%N-[ABCD]-%"
ですが、最終的な可能な値を説明する適切な方法を見つけることができませんでした。良い方法はありますか、またはこの条件を処理するロジックでストアド プロシージャを複雑にする必要がありますか?