2

我正在尝试格式化一些文本,虽然我过去使用过各种 ProperCase 函数,但这并不是我所追求的。我的示例文本将是这样的:-

这是一个测试,看看一切是否正确。一旦完成,请让马克知道。

我希望它的格式如下

这是一个测试,看看它是否正确。一旦完成,请让马克知道。

本质上,我只想在文本字符串的开头或句号之后使用大写字母,这可能吗?

谢谢警察局

4

1 回答 1

2

您可以使用下面的代码。我很确定 SQL 不是最好的工具,但它是一个有趣的练习。下面的代码适用于以下假设:

在您的示例中,像“Mark”这样的词没有例外,只有 2 条规则用于开头和句号。

句号后总是有一个空格(如果不是这种情况,更改下面的代码将相当容易)

declare @input as nvarchar(max) = 'this is a TEST to see if everything is correct. once this has been done please let Mark know.'
declare @result as nvarchar(max) = ''

;with cte
as
(
    select substring(@input, 1, 1) as Ch, 1 as Idx

    union all

    select substring(@input, cte.Idx + 1, 1) as Ch, cte.Idx + 1 as Idx
    from cte
    where cte.Idx < len(@input)
)

select
    @result = @result + case when Idx > 2 and (select Ch from cte t where t.Idx = cte.Idx - 2) = '.'
    then upper(Ch)
    else  
        case Idx
        when 1 then upper(Ch)
        else lower(Ch) 
        end
    end
from cte

print @result
于 2013-10-07T10:20:57.710 回答