关于SQL传参问题!在线急等!高分发散!
我在data.xsd 中写一sql文中含有in 的语句,例如select * from user where
user.id in( '1 ', '2 ', '3 '),但现在是想把( "1 ", "2 ", "3 ")用参数传进去,而不是设成固定值。
我写成select * from user where user.id in(:id)
然后再传参数id的时候
其中id 为 dim id as stirng = " '1 ', '2 ', '3 ' "
但这样不行 传不进去,请问有没有什么样的办法解决!
不能用or 语句来代替!
------解决方案--------------------dim id as stirng = "( '1 ', '2 ', '3 ') "
sql = "select * from user where user.id in " + id;
试试看
------解决方案--------------------没有理解lz的意思
------解决方案--------------------id 的值,是从哪里来的
------解决方案--------------------传过来就是 ( "1 ", "2 ", "3 ") 这个形式吗。。2楼的方法难道不行???
------解决方案--------------------declare @command varchar(200)
select @command = 'select * from user where user.id in( ' + @id + ') '
exec(@command)
------解决方案--------------------/// <summary>
/// 合并字符串,构造成in字句的格式
/// </summary>
/// <param name= "keys "> </param>
/// <returns> </returns>
public static string UniteStringForIn(string[] keys)
{
if (keys == null)
return string.Empty;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < keys.Length; i++)
{
sb.Append( " ' ");
sb.Append(keys[i]);
sb.Append( " ' ");
if (i < keys.Length - 1)
{
sb.Append( ", ");
}
}
return sb.ToString();
}
------解决方案--------------------就是界面层传递一个字符串数组给业务层,然后业务层构造sql语句处理业务,没有问题呀
------解决方案--------------------帮顶
------解决方案--------------------不懂楼主想要干什么....
------解决方案--------------------回复人:antoniusguo(anton) ( 四级(中级)) 信誉:100 2007-05-10 15:16:44 得分:0
?
declare @command varchar(200)
select @command = 'select * from user where user.id in( ' + @id + ') '
exec(@command)
这不就是楼主要的效果么....
------解决方案--------------------创建一个临时表 Create table #temptab(****),select之前把所有的参数放进去,select 之后全部清除掉。
在DB2中有用户临时表,是在内存中创建的更加方便。
------解决方案--------------------你试一下dim id as stirng = " ' ' '1 ' ', ' '2 ' ', ' '3 ' ' ' "
------解决方案--------------------JF
------解决方案--------------------select * from [user]