有没有办法将列名作为参数传递给函数?将列名作为参数传递?
我想创建一个函数,根据列过滤值,但我将这个列名称传入函数(理想情况下是一个字符串)?
我做了尝试,但我宣布列名称为varchar,显然这不会工作!
有没有办法将列名作为参数传递给函数?将列名作为参数传递?
我想创建一个函数,根据列过滤值,但我将这个列名称传入函数(理想情况下是一个字符串)?
我做了尝试,但我宣布列名称为varchar,显然这不会工作!
简短回答:不可以。
唯一的方法就是使用动态SQL。建立一个以字段/表名作为参数的存储过程并不常见,并且构建一个新的SQL语句来执行。
但是,函数不能执行动态SQL。
这可以是错误指向设计的指示。如果你详细说明为什么你需要这个,我们可能会提供替代设计,根本不需要它。
或者,您可能更适合使用存储过程而不是函数。
使用OR
条件链不也满足了像您描述的想法。但它通常会产生非常糟糕的计划。我会查找我的有用链接,以解释为什么以及如何处理它;它非常深入,但非常好知道。
你能做到这一点在某些动态SQL,在那里你建立在飞行的查询,或者如果你有场数量有限,你可以做类似
select * from table where
(param = 'field1' and field1 = value)
or (param = 'field2' and field2 = value)
这必须是重复的。 – usr
您可以将字段名称作为字符串确定。但是你不能在函数中使用动态SQL,所以你需要条件逻辑来处理所有的情况。 –
您可能可以在CLR编译的用户函数中执行此操作,但这是一大堆工作,可能不会很好地利用您的时间。 –