コンテキスト: SQL Server 2000
他の 2 つのテキスト間のテキストを提供する 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
これは、たとえば、
SELECT dbo.StrBetween('dog','d','g')
ただし、最初の引数の値として列を渡すと、応答がありません。例えば、
SELECT [TEST].[dbo].StrBetween(Referrer,'//', '/') as tst FROM tblTest
リファラーは nvarchar フィールドとして宣言されます。T-SQLに関しては初心者です。私が見ていない明らかなことは何ですか?