【发布时间】:2021-02-10 14:18:03
【问题描述】:
我正在尝试在 where 语句中使用从其他地方传递的变量中的值,但我在语法上苦苦挣扎。
我有一个正在传递的字段,其中的值本质上是一个列表
即@Var1,其中传递的值为AA','BB','CC(即缺少前导'和尾随'
我想在我的 where 语句中使用这个值作为一个列表,例如
where
field1 IN @Var1
ie - 我想要的实际结果是
where
field1 IN ('AA','BB','CC')
我无法控制正在传递的内容(即 AA'、'BB'、'CC 将始终缺少前导和尾随',那么我如何在在哪里?
我似乎遇到了围绕使用 '
的语法问题我希望这是有道理的,这不是最容易解释的事情,而且对我来说仍然相对较新
【问题讨论】:
-
为了清楚起见,变量中的值每次用户选择的东西都可能不同 - 例如可能是 AA'、'BB'、'CC 一次,然后是 EE'、' FF','AA 下一次但每次第一个代码都缺少开头 ' 并且最后一个代码缺少结尾 '
-
不要为此使用标量变量,顾名思义,它们具有标量值。使用表值类型。
-
上帝接受的答案太糟糕了,@GSerg ...这是注射的噩梦。
-
“本质上是一个列表”——不,不是。这是一个恰好包含一些逗号的字符串。我知道没有一种语言会采用这样的值,作为单个参数提供,然后突然决定将其解释为多个参数。您应该使用 设计的类型 来保存多个值,例如表变量,或者如果不是,则使用 XML 或 JSON。
标签: sql sql-server variables where-clause in-clause