1
我有TSQL中的表值函数,如果我传递一个字符串,但如果我传递一个varchar,则不会有效。TSQL表值函数参数不同的行为,如果参数变量
例如,这个工程:
SELECT * from [dbo].[SplitString]('ta;aa;qq', ';')
这不起作用:
declare @invarchar as varchar
set @invarchar = 'ta;aa;qq'
SELECT * from [dbo].[SplitString](@invarchar, ';')
如果你好奇的功能:
CREATE FUNCTION [dbo].[SplitString]
(
@List NVARCHAR(MAX),
@Delim VARCHAR(255)
)
RETURNS TABLE
AS
RETURN (SELECT [Value] FROM
(
SELECT
[Value] = LTRIM(RTRIM(SUBSTRING(@List, [Number],
CHARINDEX(@Delim, @List + @Delim, [Number]) - [Number])))
FROM (SELECT Number = ROW_NUMBER() OVER (ORDER BY name)
FROM sys.all_objects) AS x
WHERE Number <= LEN(@List)
AND SUBSTRING(@Delim + @List, [Number], LEN(@Delim)) = @Delim
) AS y
);
GO
我有与多个表值函数相同的结果,所以我想我的问题是我从错误的变量中调用它的方式。我怎样才能使用一个变量,仍然有相同的输出?