В SQL Server У меня есть запрос, который выглядит следующим образом (часть пункта большего запрос WHERE
)SQL Server литье из таблицы
SELECT 1
WHERE TPR.GRDE_PK IN
(
SELECT CAST(String AS INT)
FROM dbo.Split_New(@GRADES, ',')
)
@Grades
равно '14, 15' и dbo.Split_New
является функция, которая возвращает таблицу с одним столбцом с именем String
, который будет содержать «14» и «15». 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
Можете ли вы опубликовать функцию? –
@Goat_CO Добавлено –