【发布时间】:2013-08-27 16:27:35
【问题描述】:
查询给出 O/p 为
ItemSizeNM
(colName)
'U','V','X','Y'
但是当我在我所做的代码中使用它作为 IN Query 的输入时。 它没有给出相同的结果集。为什么会发生这种情况...? 表 MstItemSize 有正确的数据。
declare @tblRingSize table ( ringSize varchar(100)) declare @ringSize varchar(100) select @ringSize= cast((otherringSize) as varchar) from ##tempBand where styleNo='BD00002';
插入到@tblRingSize 从 dbo.SplitStrings_CTE 中选择项目(@ringSize,',');
从 MstItemSize 中选择 ItemSizeNm,其中 SizeTypeNm ='Ring' 和
项目尺寸Nm
在 --('U','V','X','Y')( 选择替换 ( (select STUFF((select ''',''' + ringSize from @tblRingSize For XML PATH('')),1,2,'') +'''' ) ,' ',''))
选择替换 ( (select STUFF((select ''',''' + ringSize from @tblRingSize For XML PATH('')),1,2,'') +'''' ) ,' ','')
【问题讨论】:
-
尽量不要使用
varchar,而是使用varchar(100)。另外,您为什么要使用全局##temp 表? SplitStrings_CTE 的定义是什么? ##tempBand中otherringSize的数据类型是什么? -
我使用 Global temp 因为我也想在其他查询中使用该表。SplitStrings_CTE 函数将逗号分隔字符,otherringSize 的数据类型是 varchar(100)
-
其他查询在哪里?我也知道 split 函数的作用,但也许它做得不对(例如,varchar 声明可能会默默地截断您的字符串)。你从哪里得到的功能?
-
sqlperformance.com/2012/07/t-sql-queries/split-strings from Here 我得到了这个函数 SplitStrings_CTE
-
跟踪你正在做的事情或你期望的输出真的很难。
@ringSize的值是多少?它是否包含那些字符串分隔符,所以它是@ringSize = '''U'',''V'',...';你期望什么输出?
标签: sql sql-server stored-procedures table-variable