SQL语句如下:
SELECT * FROM t_posting WHERE c_category_id in(@categoryid).cs文件里了取得了
@categoryid="1,2,3,4,5"为什么显示不出任何记录,而我如果写成SELECT * FROM t_posting WHERE c_category_id in(1,2,3,4,5)
就可以显示记录啊?是不是和@categoryid类型有关啊?
我应该怎么办呢?
SELECT * FROM t_posting WHERE c_category_id in(@categoryid).cs文件里了取得了
@categoryid="1,2,3,4,5"为什么显示不出任何记录,而我如果写成SELECT * FROM t_posting WHERE c_category_id in(1,2,3,4,5)
就可以显示记录啊?是不是和@categoryid类型有关啊?
我应该怎么办呢?
解决方案 »
- 上传的附件只能查看,没权限的不能下载、保存、另存为
- 关于.aspx.cs页面返回js alert的问题
- VIEW与Controllers多层文件夹时,Controllers如何定向VIEW
- 上传报错 是路径错了吗?
- 弹出窗口的问题,确定按钮关闭前先执行服务端程序?
- 求助!关于HyperLink
- 谁精通bbs的设计开发?
- SOS!! 提示:Fill: SelectCommand.Connection 属性尚未初始化。
- 如何获取当前datagrid最后一行的第一个单元格的值??
- .net系统出现问题,请高手助阵!谢谢
- 安装microsoft .net framework后打开ASP网页,简体出现乱码?
- 有个关于datagrid的奇怪的问题,谁能解决?
string strSql = "SELECT * FROM t_posting WHERE c_category_id in(" + categoryid + ")";
set @sql = '';set @sql = 'SELECT * FROM t_posting WHERE c_category_id in(' + @categoryid + ')'exec (@sql)
SELECT * FROM t_posting WHERE c_category_id in(1,2,3,4,5)
或带多个参数的存储过程
set @str='1,2,3,4'set @Sql = 'SELECT * FROM t_posting WHERE c_category_id in ('+@str+')'
print(@sql)
应该将sql语句也赋至一个string变量里,然后再跟参数进行拼凑。这样才能得到你要的结果。
set @sql = '';set @sql = 'SELECT * FROM t_posting WHERE c_category_id in(' + @categoryid + ')'exec (@sql)
可以写一个用户表值函数fsplit,功能是输入字符串,和分隔符,
返回一个table,里面是将输入字符窜用分隔符分隔成的一元素集
也就是输入"1,2,3,4,5","," 返回一列五行,每行非别为1 2 3 4 5
然后你用
SELECT * FROM t_posting WHERE c_category_id in( select * from fsplit(@categoryid,','))
就可以得到正确的结果了。ALTER function dbo.fsplit
(
@str varchar(4000) --要分拆的字符串
,@spli varchar(10) --字符串分隔符
)
returns @re table(istr varchar(1000))
as
begin
declare @i int,@splen int
select @splen=len(@spli)
,@i=charindex(@spli,@str)
while @i>0
begin
insert into @re values(left(@str,@i-1))
select @str=substring(@str,@i+@splen,8000)
,@i=charindex(@spli,@str)
end
if @str<>'' insert into @re values(@str)
return
end