declare @var1 nvarchar(100)
set @var1='C85,c84,c88'
set @var1=REPLACE(@var1,'C','')
select column24 from someTable where column23 in (@var1)
大家好,我是新来的,我需要帮助。这个查询给了我什么,我知道它的beacouse var1是nvarchar,但我不知道如何让它工作。不要问我为什么使用REPLACE,我正在测试一些东西,在这个特定的查询中它看起来很愚蠢。所以密切关注那一个:) 是的,第23栏的someTable中有84,85,88行。我只通过mssql管理工作室这样做。
答案 0 :(得分:0)
这应该可以解决问题:
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;
答案 1 :(得分:0)
试试这个,
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')))
)