SQL中的完整停止/大写字母

时间:2013-10-07 07:51:56

标签: sql sql-server sql-server-2008 tsql

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

  

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

我希望它的格式如下

  

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

本质上我只需要在文本字符串的开头或完整停止之后使用大写字母,这可能吗?

谢谢PD

1 个答案:

答案 0 :(得分: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