Sql 其中包含一个局部变量
可能重复: 我想在WHERE in子句中使用declare局部变量 大概是这样的:Sql 其中包含一个局部变量,sql,sql-server,sql-server-2005,where,where-in,Sql,Sql Server,Sql Server 2005,Where,Where In,可能重复: 我想在WHERE in子句中使用declare局部变量 大概是这样的: DECLARE @var VARCHAR(100) = '1,3,5' SELECT * FROM xyz WHERE col1 IN ( SELECT number FROM simple_intlist_to_tbl(@var) ) 表XYZ 结果 1 A 2 B 5 E 质疑 我该怎么做 注: 我没有服务器功能 我只
DECLARE @var VARCHAR(100) = '1,3,5'
SELECT *
FROM xyz
WHERE col1 IN
(
SELECT number
FROM simple_intlist_to_tbl(@var)
)
表XYZ
结果
1 A
2 B
5 E
质疑
我该怎么做
注:
我没有服务器功能
我只能通过代码创建原语值,并将其用于查询。
我搜索一种只更改var而不更改查询本身的方法
我的代码如下所示:
list (dbparameter)
mylist.add ('@var','1,2,5')
commandsql.returnresult(myQueryInString,mylist)
我想
DECLARE @var TABLE
(
value INT
)
INSERT
INTO @var
VALUES
(1), (3), (5)
/* You would need three separate inserts in 2005 */
SELECT *
FROM xyz
WHERE col1 IN
(
SELECT value
FROM @var
)
您还可以编写一个表值函数来拆分CSV,但如果您的客户端库支持传递表变量,则这是首选选项
您可以在搜索simple_intlist_to_tbl中找到函数定义。声明并按如下方式调用:
DECLARE @var VARCHAR(100) = '1,3,5'
SELECT *
FROM xyz
WHERE col1 IN
(
SELECT number
FROM simple_intlist_to_tbl(@var)
)
如果您的查询比这更复杂,您可能希望首先具体化此列表:
DECLARE @var VARCHAR(100) = '1,3,5'
DECLARE @tvar TABLE
(
number INT
)
INSERT
INTO @tvar
SELECT number
FROM simple_intlist_to_tbl(@var)
SELECT *
FROM xyz, ... /* Other complex joins */
WHERE col1 IN
(
SELECT number
FROM @tvar
)
您还可以编写一个表值函数来拆分CSV,但如果您的客户端库支持传递表变量,则这是首选选项
您可以在搜索simple_intlist_to_tbl中找到函数定义。声明并按如下方式调用:
DECLARE @var VARCHAR(100) = '1,3,5'
SELECT *
FROM xyz
WHERE col1 IN
(
SELECT number
FROM simple_intlist_to_tbl(@var)
)
如果您的查询比这更复杂,您可能希望首先具体化此列表:
DECLARE @var VARCHAR(100) = '1,3,5'
DECLARE @tvar TABLE
(
number INT
)
INSERT
INTO @tvar
SELECT number
FROM simple_intlist_to_tbl(@var)
SELECT *
FROM xyz, ... /* Other complex joins */
WHERE col1 IN
(
SELECT number
FROM @tvar
)
您需要一个将列表拆分为Jeff Moden提供的数据集的函数,该函数运行速度非常快,然后只需在所需列上使用IN子句。您需要一个将列表拆分为Jeff Moden提供的数据集的函数,该函数运行速度非常快,然后只需在所需列上使用IN子句。,我仍然对论坛模板有问题我不能在数据库中创建函数,我仍然对论坛模板有问题我不能在数据库中创建函数,变量应该在代码中设置,我只有primitif类型。因此,我将无法在@var中推送X个值,而var应该在代码中设置,我只有primitif类型。因此,我将无法在@var中推送X个数值。我无法在服务器上创建函数。您可以在查询中在线运行代码,它也可以正常工作。如果您不想通读本文的全部内容,请滚动到文章的最底部。我无法在服务器上创建函数。您可以在查询中在线运行代码,它也可以正常工作。如果你不想通读整篇文章,请滚动到文章的最底部。