我正在尝试格式化一些文本,虽然我过去使用过各种 ProperCase 函数,但这并不是我所追求的。我的示例文本将是这样的:-
这是一个测试,看看一切是否正确。一旦完成,请让马克知道。
我希望它的格式如下
这是一个测试,看看它是否正确。一旦完成,请让马克知道。
本质上,我只想在文本字符串的开头或句号之后使用大写字母,这可能吗?
谢谢警察局
我正在尝试格式化一些文本,虽然我过去使用过各种 ProperCase 函数,但这并不是我所追求的。我的示例文本将是这样的:-
这是一个测试,看看一切是否正确。一旦完成,请让马克知道。
我希望它的格式如下
这是一个测试,看看它是否正确。一旦完成,请让马克知道。
本质上,我只想在文本字符串的开头或句号之后使用大写字母,这可能吗?
谢谢警察局
您可以使用下面的代码。我很确定 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