读书人

加载数据解决方案

发布时间: 2013-09-05 16:02:07 作者: rapoo

加载数据
CREATE TABLE #tb
(id VARCHAR(10))
INSERT INTO #tb
SELECT '1'
UNION ALL
SELECT '2'
UNION all
SELECT '3'
UNION ALL
SELECT '4'
UNION
SELECT '5'


declare @code varchar(5000)
set @code=',1,2,3,4'
SELECT REPLACE(''''+@code+'''',',',''',''')
SELECT * FROM #TB WHERE id IN (REPLACE(''''+@code+'''',',',''',''') )
----得不出数据

SELECT * FROM #TB WHERE id IN('','1','2','3','4')
---只有这样才可以得到数据


各位大侠,这是什么原因呀。 数据
[解决办法]

引用:
@AndyHang
谢谢
想问一下,前面那种方法为什么不行呀。


declare @code varchar(5000)
set @code=',1,2,3,4'
print REPLACE(''''+@code+'''',',',''',''')
/*
'','1','2','3','4'
*/
-->结果是一个字符串,连接在一起的,它没有分离成独立的单个元素
而打印出来的整个字符串就是一个元素,IN函数是元素的值完全匹配,表里的值只有单个1,2,3,4
所以查询没有结果

[解决办法]
引用:
@AndyHang
谢谢
想问一下,前面那种方法为什么不行呀。

declare @code varchar(5000)
set @code=',1,2,3,4'
SELECT REPLACE(''''+@code+'''',',',''',''')--不能用这种写法,

SELECT * FROM #TB WHERE id IN (REPLACE(''''+@code+'''',',',''',''') )
--这行语句相当于:
SELECT * FROM #TB WHERE id IN (''''',''1'',''2'',''3'',''4''')
SELECT * FROM #TB WHERE id IN (@某一变量)--它会把你的整个字符串看成一个值,而不是"空,1,2,3,4"多个值

读书人网 >SQL Server

热点推荐