SQL中In(变量)的问题

比如说这个语句,select t.* from table t where t.f1 in (variable1)

这个语句显然是行不通的,因为in不能用变量,只能是in('aa','bb'),但是现在我的variable1是个变量,没办法确定。如何做才能达到这个select语句想要的目的呢?请高手指教!
这变量是不确定的,应该就是'bb','cc','dd'....这个样子。但是我不能确定内容和数目。1楼说的那种方法,我怎么改成'aaa,bbb,ccc'?

这个可以尝试使用动态字符串
declare @variable1 varchar(1000)--变量
declare @sql varchar(8000)
set @sql = 'select t.* from table t where t.f1 in (' +@variable1+')'
exec(@sql)
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-03
你把那变量格式改成"aaa,bbb,ccc";

请问“SQL中In(变量)的问题”这个问题你是怎么解决的? 谢谢
in 占用资源太多,最好使用exists

SQL中In(变量)的问题
这个可以尝试使用动态字符串 declare @variable1 varchar(1000)--变量 declare @sql varchar(8000)set @sql = 'select t.* from table t where t.f1 in (' +@variable1+')'exec(@sql)

oracle 存储过程 sql中in变量问题
应该是有问题的.可以这样尝试一下:a varchar2(N);execute immediate 'select count(1) from t where type in('||a||')' into v_count ;还要注意传入的变量,引号别弄丢了...应该是可以的,我没有测试,很久没有动过这些了.

select语句中in后面怎么用变量的问题
要想在in中用变量,需要用动态SQL,请看下例子,我在oracle 10g中测试通过:declare v_1 varchar2(100);v_2 varchar2(200);begin v_1:='(''1'',''2'',''3'')';v_2:='insert into testa2 select * from testa1 where fch in'|| v_1;execute immediate v_2;commit;end;

sql 存储过程 in () 参数问题
你好。写个例子 create proc abcd param nvarchar(200)as select from room where roomid in (@param )exec abcd 8 或者 exec abcd '8'roomid是 int类型的。直接调用就可以把。

sql语句总使用in后面的变量怎么写
memo1.lines.loadformfile(filepath);adoquery1.close;adoquery1.sql.text := ‘select from power.check_sn where serial_number in (’+ memo1.text +‘)’;adoquery1.open;这里有一个问题,当serial_number是字符串时,需要分词并加上‘’号 ...

sql语句中in的用法问题
IN的用法没有错,可能是数据里面没有'南京'的数据,或者你IN放的位置不对

有什么关于sql语句中in的用法总结?
SQL语句中的IN运算符有以下两种常见用法:首先,当您希望某个字段的值存在于一组预定义的值中时,可以使用常量用法。例如,若要查询在“01,02”中出现的特定字段的值,可以编写如下语句:字段 in (‘01’,’02’).其次,子查询方法允许您将查询结果与字段进行比较。例如,假设您希望某两个字段分别...

关于SQL语句IN的查询问题
肯定不可以的阿,不是你描述不清就是你自己都没搞清楚要想说什么。IN 多用于子查询或检查约束中

sql语句 in如何限定个数?
真有10000个变量你就直接写进去或,使用exists子句 没必要分成 or id in来写,这样说不定会更慢的 或都把这些变量写到一个临时表里面,再将临时表与这个表做JOIN操作

相似回答