我正在使用一个存储过程,该过程提取一个字符串参数并将其用作WHERE table.value LIKE @pattern
其查询之一的子句的一部分。在任何人对它所引发的危险直言不讳之前,该过程是使用一组已知值中的一个作为模式参数来调用的——用户输入没有直接传递到这个参数。
对于个别情况,这是可行的。我可能的模式是:
"RBI-%-TH%N-[AB]-%"
"RBI-%-TH%N-C-%"
"RBI-%-TH%N-D-%"
"RBI-%-VISUAL%"
我遇到的问题是试图通过设置默认模式来覆盖所有四个(它将选择table.value
与这些模式中的任何一个匹配的所有记录,但仅此而已)。前三个很容易,"RBI-%-TH%N-[ABCD]-%"
但是我还没有找到解释最终可能值的好方法。有没有好的方法,或者我需要用逻辑使存储过程复杂化来处理这种情况?