将几个字符从 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')))
)
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')))
)