SQL语句:
(select top 1 [egrp_name] from [Enotify Group] where [egrp_id] in (a.grp_id) )
a.grp_id的值为'0,1145'
,我收到错误
Conversion failed when converting the varchar value '0,1145' to data type int.
在上述情况下,有人可以告诉我如何将'0,1145'
更改为0,1145
,因此我的查询确实有效,如果他们有其他任何方式可以执行此操作
答案 0 :(得分:1)
您可以使用拆分字符串函数将逗号分隔的字符串更改为表格。
select top(1) [egrp_name]
from [Enotify Group]
where [egrp_id] in (
select Value
from dbo.SplitInts(a.grp_id)
);
如果您愿意,可以使用分割字符串函数的一个版本:
create function dbo.SplitInts(@Values nvarchar(max)) returns table with schemabinding
as
return
(
select T2.X.value(N'.', N'int') as Value
from (select cast(N'<?X '+replace(@Values, N',', N'?><?X ') + N'?>' as xml).query(N'.')) as T1(X)
cross apply T1.X.nodes(N'/processing-instruction("X")') as T2(X)
);
或者您可以使用like
。
select top(1) [egrp_name]
from [Enotify Group]
where ','+a.grp_id +',' like '%,'+cast(egrp_id as varchar(11))+',%' ;