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

转换为数据类型为 int 的列时发生语法错误,怎样解决?
表bevy
bevy_id     bevy_man     bevy_sort(int)
    1                   小华           2
    2                   小朱           3
    3                   小水           2
    ...               ...             ...
如何output   为字符串: "2,3,2 "
存储过程如下:
declare   @a   varchar(100)
set   @a= ' '
select   @a=@a+isnull(bevy_sort, ' ')+ ', '   from   bevy
select   left(@a,len(@a)-1)   as   output
为什么出现:
将   varchar   值   ', '   转换为数据类型为   int   的列时发生语法错误



------解决方案--------------------
把 bevy_sort 转为字符串类型再与 ', '相加:

declare @a varchar(100)
set @a= ' '
select @a=@a+isnull(rtrim(bevy_sort), ' ')+ ', ' from bevy
select left(@a,len(@a)-1) as output

------解决方案--------------------
declare @a varchar(100)
set @a= ' '
select @a=@a+isnull(cast(bevy_sort as varchar), ' ')+ ', ' from bevy
select left(@a,len(@a)-1) as output
------解决方案--------------------
bevy_sort先转成字符型吧
------解决方案--------------------
--如果想NULL显示为NULL:
--select @a=@a+isnull(bevy_sort, ' ')+ ', ' from bevy
select @a=@a+isnull(cast(bevy_sort as varchar), 'NULL ')+ ', ' from bevy