当前位置: 代码迷 >> Sql Server >> sql外连接查询的字段中含有逗号,结果中也需要用逗号隔开
  详细解决方案

sql外连接查询的字段中含有逗号,结果中也需要用逗号隔开

热度:25   发布时间:2016-04-24 10:35:14.0
sql外连接查询的字段中带有逗号,结果中也需要用逗号隔开
select Id,UserId as 用户名,UserName,Password as 密码,RolseId,AdminAreaID,LastIp,Position,Education,Contact,Home_address,Disabled as 是否启用,case State WHEN 0 THEN '离线' when 1 then '在线' end as 当前状态, 

(select stuff((select ','+RolesName from Sys_Roles where cast(ID as nvarchar ) in(a.RolseId) for xml path('')),1,1,'')) FROM Sys_Users a 

其中a.Rolseid是‘32’,‘21’这样的内容,直接把这个字符串结果放里面就可以查询,但是要是外连接上a.Rolseid的时候就报错


消息 245,级别 16,状态 1,第 2 行
在将 nvarchar 值 ''32',' 33'' 转换成数据类型 int 时失败。
------解决方案--------------------
try this,

select Id,UserId as 用户名,UserName,Password as 密码,
       RolseId,AdminAreaID,LastIp,Position,Education,
       Contact,Home_address,Disabled as 是否启用,
       case State WHEN 0 THEN '离线' when 1 then '在线' end as 当前状态, 
(select stuff((select ','+RolesName 
               from Sys_Roles 
               where charindex(','+cast(ID as nvarchar)+',',
                               ','+replace(a.RolseId,'''','')+',',
                               1)>0
               for xml path('')),1,1,''))
FROM Sys_Users a 
  相关解决方案