SQL中:
DECLARE @a varchar(90),@b varchar(90),@c varchar(90)
set @a='001'
set @b='002'
set @c=@a+','+@b
SELECT * FROM table WHERE code IN (@c)个人理解:
@c在IN中为(''001','002'')
IN(@a,@b)是可以的。但@a,@b应该是循环里面变量的一部分。我需要累计所有的code。只要能过就行。方法不限
DECLARE @a varchar(90),@b varchar(90),@c varchar(90)
set @a='001'
set @b='002'
set @c=@a+','+@b
SELECT * FROM table WHERE code IN (@c)个人理解:
@c在IN中为(''001','002'')
IN(@a,@b)是可以的。但@a,@b应该是循环里面变量的一部分。我需要累计所有的code。只要能过就行。方法不限
解决方案 »
- 寻求一个关于hibernate有关的抓狂的问题
- 无法提交断点
- JAVA里的容器是不是有大小限制的??
- 淘宝笔试题 Stringbuffer和StringBuilder的区别是什么?
- 菜鸟求救..........................................................!!!!!!!!!!!~~~~~~~~~~~~
- 用jdbc连接sql server 2000数据库,死活连不上,请教大家,谢谢
- 内存释放问题
- 谁有Borland Enterprise Server的序列号,重谢!!!(在线给分)
- 《Java2面向对象编程指南》这本书怎么样?
- JAVA语法里的VOID到底怎么用呀?我不知道什么时候加到类或者方法里!?
- 如何在本程序窗口外读取光标位置?
- 请大家帮忙看道小程序··
我觉得 @c在IN中为('001','002') 而不是 (''001','002'')
declare @i int
declare @str varchar(1000)
set @str = ''
set @i = 0
while(@i<100)
begin
set @str = @str + '''' + '00' + convert(varchar(3),@i) + '''' + ','
set @i = @i + 1
end
set @str = left(ltrim(rtrim(@str)),len(ltrim(rtrim(@str)))-1)declare @sql varchar(2000)
set @sql = 'select * from mytable where id in (' + @str + ')'
print @sql
code name
001 刘德华
002 黎明
003 张学友DECLARE @a varchar(90),@b varchar(90),@c varchar(90)
set @a='001'
set @b='002'
set @c=@a+','+@b
SELECT * FROM star WHERE code IN (@c)大家可以实验一下,IN(@a,@b)就可以
用@c的时候就查不到001和002的值。我想知道怎么处理才能查出值。谢谢 Johnson_ch(狂热者) 我试了一下,还是不行