if charindex(',',@sourcestr)>0 begin declare @i int declare @n int set @i=1 while charindex(',',@sourcestr,@i)>0 begin set @n=charindex(',',@sourcestr,@i) insert into @table values(substring(@sourcestr,@i, @n-@i) )
set @i=@n+1 end insert into @table values(substring(@sourcestr,@i,len(@sourcestr)-@i+1)) end else insert into @table values(@sourcestr)
delete from @table where isnull(list,'') = '' return END
然后把你的查询放到这个参数里面 [其他解释] exec dbo.ExecSelectSql 'm_user','m_id,m_nick,m_img',' convert(int,m_id) in (Select Top 1 m_idoluid from m_my_otherinfo Where m_uid = 1) ',' m_id desc ',0
这样呢? [其他解释] 试试
exec dbo.ExecSelectSql 'm_user','m_id,m_nick,m_img',' m_id in (Select Top 1 convert(varchar(128),m_idoluid)m_idoluid from m_my_otherinfo Where m_uid = 1) ',' m_id desc ',0
[其他解释]
不行啊。 [其他解释]
不行额。 [其他解释] 那可能是你这个ExecSelectSql 里面出错,按常理,拼接好一个完整语句后才执行的。 [其他解释] 不是啊。 我这样写: select top 10 * from m_user where m_id in (Select Top 1 m_idoluid from m_my_otherinfo Where m_uid = 1) 也是提示错误啊。 [其他解释] 因为你的值是2,3,4,5这样的东西,可能要用个函数把这个值转换成表。 [其他解释] Select Top 1 m_idoluid from m_my_otherinfo Where m_uid = 1 你这个查询出来是一个字符串啊,这样用肯定会报表的.
咋我感觉不对呢。。我一直都是这样使用函数的啊。。 那我这个SQL语句该怎么改? select top 10 * from m_user where m_id in (Select Top 1 m_idoluid from m_my_otherinfo Where m_uid = 1) [其他解释] select top 10 * from m_user where m_id in (select * from getinstr(Select Top 1 m_idoluid from m_my_otherinfo Where m_uid = 1)) [其他解释]
select top 10 * from m_user where m_id in (select * from getinstr(Select Top 1 m_idoluid from m_my_otherinfo Where m_uid = 1)) 服务器: 消息 156,级别 15,状态 1,行 1 在关键字 'Select' 附近有语法错误。 服务器: 消息 170,级别 15,状态 1,行 1 第 1 行: ')' 附近有语法错误。