SQL错误将数据类型varchar转换为数字

时间:2013-05-14 10:32:09

标签: sql-server tsql

我需要进行此查询:

declare @no as varchar(100)

set @no='11,2,23'

select * from ft (nolock) where fno in (@no)

但始终出现此错误:将数据类型varchar转换为数字

时出错

表中的fno是数字

2 个答案:

答案 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
)