「これは文です」を「これは文です」にする機能を作ってみました。その代わり
「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 を返します。後で、前置詞を無視する方法を追加して、This is a Sentence のみを取得したいと思います。