0

我试图制作一个函数来将“这是一个句子”变成“这是一个句子”。反而

我得到“ThisIsASentence”,即当函数返回字符串时我丢失了空格。这是函数定义:

ALTER FUNCTION [dbo].[fn_Case_Correction] (@String VARCHAR(max))
        returns varchar(max) 
AS
BEGIN

DECLARE @p varchar(max)
DECLARE @q varchar(max)


set @p = @String
set @String = ' '

while len(@p) <> 0

begin

set @q =  LEFT(@p,ISNULL(NULLIF(CHARINDEX(' ', @p) - 1, -1),LEN(@p)))

set @q = stuff(@q, 1, 1, upper(substring(@q, 1, 1)))

set @String = stuff(@String, len(@String) + 1, len(@q) + 1, @q + ' ')

set @p = SUBSTRING(@p,ISNULL(NULLIF(CHARINDEX(' ', @p), 0), LEN(@p)) + 1, LEN(@p))

end


return ltrim(@String)

END

dbo.fn_Case_Correction('this is a sentence') 在应该返回 This Is A Sentence 时返回 ThisIsASentence。稍后我想添加一种忽略介词的方法,所以我只会得到This is a Sentence。

4

0 回答 0