【发布时间】:2013-02-14 13:36:56
【问题描述】:
上下文:SQL Server 2000
我写了一个 UDF,它给了我两个其他文本之间的文本,即
CREATE FUNCTION dbo.StrBetween
(
@Text nvarchar(4000),
@Lhs nvarchar(4000),
@Rhs nvarchar(4000)
)
RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @LhsOffset INT;
DECLARE @RhsOffset INT;
DECLARE @Result NVARCHAR(4000);
SET @LhsOffset = CHARINDEX( @Lhs, @Text );
IF @LhsOffset = 0
BEGIN
RETURN @Text;
END
SET @Result = SUBSTRING( @Text, @LhsOffset+1, LEN(@Text)-LEN(@Lhs));
SET @RhsOffset = CHARINDEX( @Rhs, @Result );
IF @RhsOffset = 0
BEGIN
RETURN @Result;
END
SET @Result = SUBSTRING( @Result, 1, @RhsOffset - 1 );
RETURN @Result;
END
如果我有,这在 SQL 查询分析器中可以正常工作,例如,
SELECT dbo.StrBetween('dog','d','g')
但是,当我将一列作为第一个参数的值传递时,我没有得到任何响应。例如,
SELECT [TEST].[dbo].StrBetween(Referrer,'//', '/') as tst FROM tblTest
Referrer 被声明为一个 nvarchar 字段。我是 T-SQL 的新手。我没有看到什么明显的东西?
【问题讨论】:
-
什么是推荐人内容?
-
你能澄清一下“没有回应”吗?您是否收到错误或返回的数据不正确?
-
您的函数不适用于
SELECT dbo.StrBetween('http://bbc.co.uk/default.html','//', '/')尝试使用您的实际数据进行测试。 -
请不要进行这样的编辑。您更改了您的问题,使得该错误不再出现(然后,似乎归咎于您的更新中的 corrected 行)。简而言之,它使您的问题读起来像一派胡言,对任何未来的读者都无济于事。
-
公平评论,@Damien_The_Unbeliever。我会解开的。
标签: tsql sql-server-2000 user-defined-functions