我需要进行此查询:
declare @no as varchar(100)
set @no='11,2,23'
select * from ft (nolock) where fno in (@no)
但始终出现此错误:将数据类型varchar转换为数字
时出错表中的fno是数字
答案 0 :(得分:4)
您无法直接选择in (@no)
之类的数据,因为LIKE
期望数据为表格。请尝试:
declare @no nvarchar(max)
set @no='11,2,23'
select * from ft (nolock) where fno in (
SELECT
Split.a.value('.', 'VARCHAR(100)') AS CVS
FROM
(
SELECT
CAST ('<M>' + REPLACE(@no, ',', '</M><M>') + '</M>' AS XML) AS CVS
) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a))
答案 1 :(得分:0)
您可以使用表变量而不仅仅是varchar变量轻松完成您尝试创建的查询:
declare @t table (
n int
)
insert into @t
values
(1)
,(2)
,(3)
select
*
from someTable
where n in (
select
n
from @t
)