我正在尝试格式化一些文本,虽然这次我使用过各种各样的ProperCase功能,但这并不是我所追求的。我的示例文本将是这样的: -
这是一个测试,看看一切是否正确。一旦完成,请让马克知道。
我希望它的格式如下
这是一个测试,看看它是否正确。完成后,请让马克知道。
本质上我只需要在文本字符串的开头或完整停止之后使用大写字母,这可能吗?
谢谢PD
答案 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