案例更正函数SQL

时间:2013-06-19 06:30:46

标签: sql string sql-server-2008 user-defined-functions

我试图将“这是一句话”变成“这是句子”。代替

我得到“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时返回ThisIsASentence。后来我想添加一种忽略介词的方法,所以我只能得到这是一个句子。

0 个答案:

没有答案