执行动态SQL查询以过滤数据

时间:2019-09-04 07:25:37

标签: sql-server tsql filter dynamic-sql

我必须支持对具有超过50列的表进行过滤,并且所有50列都可以过滤。

我有SQL格式的过滤条件,例如-

FirstName = 'Joe' OR SomePolicyId = '9677876' OR Gender = 2 OR IsAlive = 1 OR DOB > '1988/05/16' OR LastName like '%Doe'

我很困惑应该使用哪种方法。

方法1- 使用50个参数以及等于/不等于/大于和其他条件创建过程

方法2- 执行动态SQL 像

set @vquery = 'select [DbId],FirstName,LastName,UserId from [User]  where 1=1 '+@CustomFilter
exec sys.sp_executesql @vsql

我知道每种情况都有其优点和缺点,但是有什么更有益的呢?

0 个答案:

没有答案