将每个单词的第一个字母大写而不影响连续的字母
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 test
到Abc 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