加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server – 仅将SQL Server中每个句子的每个单词的首字母大写

发布时间:2020-12-25 05:04:34 所属栏目:编程 来源:网络整理
导读:我想只将SQL列中每个句子的每个单词的第一个字母大写. 例如,如果句子是: ‘I like movies’ 然后我需要输出: ‘I Like Movies’ 查询: declare @a varchar(15) set @a = 'qWeRtY kEyBoArD'select @a as [Normal text],upper(@a) as [Uppercase text],lower

我想只将SQL列中每个句子的每个单词的第一个字母大写.

例如,如果句子是:

‘I like movies’

然后我需要输出:

‘I Like Movies’

查询:

declare @a varchar(15) 

set @a = 'qWeRtY kEyBoArD'

select @a as [Normal text],upper(@a) as [Uppercase text],lower(@a) as [Lowercase text],upper(left(@a,1)) + lower(substring(@a,2,len(@a))) as [Capitalize first letter only]

在这里,我只在我的专栏中做了上,下,首字母大写(这里我只是一个随机的单词).

这是我的结果:

有没有可能做到这一点?

没有使用用户定义函数获得结果的任何可能性?

我需要输出Qwerty键盘

解决方法

declare @a varchar(30); 

set @a = 'qWeRtY kEyBoArD TEST<>&''"X';

select stuff((
       select ' '+upper(left(T3.V,1))+lower(stuff(T3.V,1,''))
       from (select cast(replace((select @a as '*' for xml path('')),' ','<X/>') as xml).query('.')) as T1(X)
         cross apply T1.X.nodes('text()') as T2(X)
         cross apply (select T2.X.value('.','varchar(30)')) as T3(V)
       for xml path(''),type
       ).value('text()[1]','varchar(30)'),'') as [Capitalize first letter only];

这首先通过用空标记< X />替换所有空格将字符串转换为XML.然后它使用nodes()粉碎XML以获得每行一个单词.要将行返回到一个值,它将使用for xml path trick.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读