22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @A VARCHAR(1000)='
i
&*
lik^^e
c
proGram, How
ab//out
you?iT
is
i++N@Ter@e**stinG.leTUSLearnittogethe]]r!'
--正则表达式+首字母大写函数
SELECT dbo.Capit( dbo.Reg_Replace(@A,'([^,.?!|a-z|A-Z])',''))
--编程,你改成你的语言吧
DECLARE @I INT=1 --记录字符位置
DECLARE @T BIT =1 --判断是否需要大写
DECLARE @C CHAR(1) --保存第i个字符
DECLARE @rst VARCHAR(1000)='' --保存结果
WHILE @I<=LEN(@A) --从第一个到最后一个字符开始循环
BEGIN
SET @C=SUBSTRING(@A,@I,1) --取第i个字符
IF (@C>='A' AND @C<='Z') OR @C IN(',','.','?','!') --判断,需要保留的字符(sql不区分大小写)
BEGIN
IF @T =1 --如果需要就转换大写,否则转换小写
SET @C=UPPER(@C)
ELSE
SET @C=LOWER(@C)
SET @rst=@rst+@C
IF @C IN(',','.','?','!') --判断下一个字符是否大写
SET @T=1
ELSE
SET @T=0
END
SET @i=@i+1 --字符位置+1
END
SELECT @rst --输出结果