日期:2014-05-16  浏览次数:21117 次

晕了,一个select 的参数问题
我用C#做开发,数据量很大,对一个表的操作有不少循环要处理,已经很费时间,某一步操作为了节省时间不再循环判断,把前面数据操作的内容,比如主键字段记录在一个字符串中并用“,”隔开,比如字符串为:“1,11,123,321,113,434,...”
然后直接用   select   *   from   tb1   where   ID   not   in   (构造的字符串)   来过滤掉这些行。但是我的字符串里可能保存了几千上万个字符,在程序里运行出错,发现实际的字符串只截取了很少一部分,导致不完整。
是否select   语句not   in   后的参数是有限制的,想想我的字符串里有上万的数据的话也确实不对劲。
有没有什么好的办法啊过滤掉这么多不要的数据,谢谢了!

------解决方案--------------------
存入表中,再用连接试试
------解决方案--------------------
确实有限制,SQL串最大长度是64KB。

建议把这些值保存到一个表中,每个值一行。

如:

字段名
1
11
123
...


然后用:

select * from 你的表名 where 字段名1 not in (select 字段名 from 表名)