将每个单词的第一个字母大写而不影响连续的字母

Posted

技术标签:

【中文标题】将每个单词的第一个字母大写而不影响连续的字母【英文标题】:Capitalize the first letter of each word without affecting the consecutive letters 【发布时间】:2021-09-02 15:08:54 【问题描述】:

我想让每个单词的首字母大写。但是,如果第一个字母旁边的单词已经大写,那么它应该不会受到影响。

例如:

text
AB test
ab test
Ab tEst

期望的输出:

text
AB Test
Ab Test
Ab TEst 

当我尝试使用这个查询时,即使它大写了第一个单词,它也降低了它旁边的单词。例如,下面的查询从ABC testAbc Test,我希望它是ABC Test

SELECT INITCAP(text)
FROM table 

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

这可能会有所帮助..

创建一个函数并在选择中使用它。

CREATE FUNCTION dbo.InitialCap(@v AS VARCHAR(MAX))
RETURNS TABLE
AS
RETURN 
WITH a AS (
    SELECT (
        SELECT UPPER(LEFT(value, 1)) + (SUBSTRING(value, 2, LEN(value))) AS 'data()'
        FROM string_split(@v, ' ')
        ORDER BY CHARINDEX(value,@v)
        FOR XML PATH (''), TYPE) ret)

SELECT CAST(a.ret AS varchar(MAX)) ret from a

来自https://***.com/a/46344989/8077687的参考

【讨论】:

以上是关于将每个单词的第一个字母大写而不影响连续的字母的主要内容,如果未能解决你的问题,请参考以下文章

javascript [All Caps]用于将句子中每个单词的第一个字母大写的脚本#vanilla #script

Java如何将每个单词的第一个字符转为大写?

我看书JavaScript将每个单词首字母变大写

javascript 每个单词的第一个字母为大写(即PHP中的ucwords)

将字符串的第一个字母大写,而不触及其他字母

C++ 每个单词的首字母必须大写