日期:2014-05-18  浏览次数:20729 次

将 varchar 值转换为数据类型为 int 的列时发生语法错误?
我的语句如下:
declare   @id   int   --传过来的文章的ID号
Set   @id=1

DECLARE   @TEXT   VARCHAR(100)   --发文单位字符串
Set   @text= ' '

select   @text=@text+ '   '+articledepart   from   law_articledepart   where   ID   IN(select   articledepart   from   law_context   where   id=@id)
print   @text

/*说明:在law_context表中有一个articledepart字段,它里边存放的是发这篇文章的单位,可以有多个,以 "1,2,3 "这样的形式存放.这里的 "1,2,3 "分别对应articledepart表中的ID号.*/
例如:
1> law_context表有一条记录
    ID     articledepart
      1         1,2,3
2> articledepart表对应的是
    ID     articledepart
    1           总经理室
    2           办公室
    3           技术部
我想得到的是@TEXT=   总经理室   办公室   技术部
用来直接输出显示!
但是现在用我写的语句,出错了,
提示: "将   varchar   值   '48,1 '   转换为数据类型为   int   的列时发生语法错误 "
不知道要如何写!请大家指点一下!


------解决方案--------------------
select @text=@text+ ' '+articledepart from law_articledepart where cast(ID as varchar) IN(select articledepart from law_context where id=@id)
print @text
------解决方案--------------------
--try
select @text=@text+ ' '+articledepart from law_articledepart
where charindex(rtrim(ID), (select top 1 articledepart from law_context where id=@id))> 0

------解决方案--------------------
用Exec写写看吧