首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

加载数据解决方案

2013-09-05 
加载数据CREATE TABLE #tb (id VARCHAR(10))INSERT INTO #tb SELECT 1UNION ALLSELECT 2UNION allSELE

加载数据
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"多个值

热点排行