将几个字符从 nvarchar 转换为 int

Converting couple of characters from nvarchar to int

declare @var1 nvarchar(100)
set @var1='C85,c84,c88'
set @var1=REPLACE(@var1,'C','')
select column24 from someTable where column23 in (@var1)

大家好,我是新来的,我需要这方面的帮助。这个查询没有给我任何信息,我知道它是因为 var1 是 nvarchar,但我不知道如何让它工作。不要问我为什么使用那个 REPLACE,我正在测试一些东西,在这个特定的查询中它看起来很愚蠢。所以闭上你的眼睛看那个:) 是的,在第 23 列的 someTable 中有第 84、85、88 行。我只通过 mssql management studio 这样做。

这应该可以解决问题:

DECLARE @var1 NVARCHAR(100);
SET @var1 = N'C85,c84,c88';
SET @var1 = REPLACE(@var1,'C','');

--select @var1;
DECLARE @sql NVARCHAR(4000);
SET @SQL = N'select column24 from someTable where column23 in (' + @var1 + ')' ;
--SELECT @SQL; 
EXEC sp_executesql @SQL;

这样试试,

DECLARE @var1 NVARCHAR(100)

SET @var1 = 'C85,c84,c88'
SET @var1 = REPLACE(@var1, 'C', '')

SELECT column24
FROM someTable s
WHERE EXISTS (
        SELECT 1
        FROM (
            SELECT CAST('<XMLRoot><RowData>' + REPLACE(@var1, ',', '</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS x
            ) t
        CROSS APPLY x.nodes('/XMLRoot/RowData') m(n)
        WHERE s.column23 = LTRIM(RTRIM(m.n.value('.[1]', 'int')))
        )