Tsql 将文本转换为SQL可以理解的内容

Tsql 将文本转换为SQL可以理解的内容,tsql,Tsql,这很难解释,但我要试一试。我有一个SQL查询(使用SQL Server),如下所示: declare @recordid as nvarchar(50) set @recordid = 1,2,3 select * from customers where recordid in (@recordid) 如您所见,1,2,3附近的语法不正确。代码显示1,2,3而不是“1,2,3”(带引号)的原因是,它是动态构建查询的系统的一部分,并且只将其放置在1,2,3中。1,2,3可以是数量可变的值,

这很难解释,但我要试一试。我有一个SQL查询(使用SQL Server),如下所示:

declare @recordid as nvarchar(50)
set @recordid = 1,2,3

select * from customers
where recordid in (@recordid) 
如您所见,1,2,3附近的语法不正确。代码显示1,2,3而不是“1,2,3”(带引号)的原因是,它是动态构建查询的系统的一部分,并且只将其放置在1,2,3中。1,2,3可以是数量可变的值,例如3,5,7,2,6,3,6,7,8,可能有数百个

我需要将中的1,2,3更改为SQL Server可以理解并包含在select语句中的内容

我的一个想法是将其插入到一个公共表表达式中,但我找不到正确的语法来执行此操作。下面的示例中,我知道这是不正确的语法:

with test (a) as (
select 1,2,3
)

select * from customers
where recordid in (test) 

有人知道如何将此值更改为SQL可以理解的值吗?

您可以像这样使用STRING\u SPLIT

select * from customers
where recordid in (select recordid from STRING_SPLIT(@recordid,',')) 

谢谢你的建议。问题是@recordid不包含string.change将varchar声明为table“代码显示为1,2,3而不是“1,2,3”(带引号)的原因是它是动态构建查询的系统的一部分”-嗯,该系统必须更改。你能控制它吗?你说,这是动态生成查询的系统的一部分。。。这在你的控制之下吗?给定的查询可能看起来像SQL,但显然是错误的。。。您要么必须更改语句的创建,要么必须使用字符串方法更改语句……这是否回答了您的问题?