有没有办法将列名作为参数传递给函数?
我想创建一个函数,根据列过滤值,但我将此列名传递给函数(理想情况下作为字符串)?
我确实尝试过,但我将列名声明为 varchar,显然这不起作用!
有没有办法将列名作为参数传递给函数?
我想创建一个函数,根据列过滤值,但我将此列名传递给函数(理想情况下作为字符串)?
我确实尝试过,但我将列名声明为 varchar,显然这不起作用!
简短的回答:没有。
唯一的方法是使用动态 SQL。制作一个以字段/表名作为参数的存储过程并构建一个新的 SQL 语句来执行的情况并不少见。
但是,函数不能执行动态 SQL。
这可能表明设计方向错误。如果您详细说明为什么需要它,我们也许可以在根本不需要它的地方提供替代设计。
或者,您可能更适合使用存储过程而不是函数。
使用一系列OR
条件的想法也符合您的描述。但它通常会产生非常糟糕的计划。我将查找我的有用链接,以了解为什么以及如何处理它;它非常深入,但很高兴知道。
编辑这是链接: T-SQL 中的动态搜索条件
您可以在一些动态 sql 中执行此操作,在其中动态构建查询,或者如果您的字段数量有限,您可以执行类似的操作
select * from table where
(param = 'field1' and field1 = value)
or (param = 'field2' and field2 = value)