MS ACCESS 求SQL语句,条件是一个数组的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 jenhon
  • 开始时间 开始时间
J

jenhon

Unregistered / Unconfirmed
GUEST, unregistred user!
想要实现这样的功能:
select * from 数据 where 编号 in (1,2,3,4,5) //相当于 编号=1 or 编号=2 or 编号=3 or 编号=4 or 编号=5

当然上面的语句应该是错误的,至少delphi里面写会报错。

1,2,3,4,5 是变化的,长短也是不一样的,在写sqlstr的时候,我自己可以改变。

现在想请教实现这样的功能,语句怎么写。

(别叫我先把1,2,3,4,5先写入一个表,再去select in,这个我会)

谢谢!
 
[:(]不知道你说的什么意思?
 
我给的语句是错的,但目的想要得到什么应该比较清晰吧?有什么问题吗?

就是我想要一句语句:
select * from 数据 where 编号 in ??????????
来代替:
select * from 数据 where 编号=1 or 编号=2 or 编号=3 or 编号=4 or 编号=5

因为我的条件:1,2,3,4,5是长短不确定的,但是已知的。
 
var
List:TstringList;
......
List:=TstringList.Create;
List.Add('''1''');List.Add('''2''');List.Add('''3''');List.Add('''4''');List.Add('''5''');

select * from 数据 where 编号 in ('+List.CommaText+');
 
谢谢subosoft

调试通过!(我的数据是INTEGER)
想问有没有更简便的方法?
因为我的:1,2,3,4,5是写在一起的TEXT的,要拆开来才能用啊。

再次感谢。
 
const
sqlcause='select * from 数据 where 编号 in (%0:s)'
var
StrSql, tmp: string;
begin
//具体的tmp你都知道怎么实现的,这里指个例子
tmp := '1,2,3,4,5';
StrSql := Format(sqlcause, [tmp]);
end;
 
晕死,结贴了,结贴了,我原来的语句没有错误.....直接写现在通过了....
 
后退
顶部