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
1 つの列が呼び出されたテーブルを返す関数です。タイプです。この行を実行しようとすると変換エラーが発生します。修正方法を教えてもらえますか?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