在 SQL Server 中,我有一个看起来像这样的查询(WHERE
较大查询的子句的一部分)
SELECT 1
WHERE TPR.GRDE_PK IN
(
SELECT CAST(String AS INT)
FROM dbo.Split_New(@GRADES, ',')
)
@Grades
等于'14,15'并且是一个函数,它返回一个表,其中包含一个名为“14”和“15”dbo.Split_New
的单列。是类型。当我尝试执行此行时出现转换错误,谁能告诉我如何修复它?String
TPR.GRDE_PK
INT
这是Split_New
函数的样子(由比我更熟练的人编写,所以我不明白所有内容):
function [dbo].[Split_New] (
@StringToSplit nvarchar(4000),
@Separator varchar(128))
returns table as return
with indices as
(
select 0 S, 1 E
union all
select E, charindex(@Separator, @StringToSplit, E) + len(@Separator)
from indices
where E > S
)
select substring(@StringToSplit,S,
case when E > len(@Separator) then e-s-len(@Separator) else len(@StringToSplit) - s + 1 end) String
--,S StartIndex
from indices where S >0