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