每个单词的首字母大写,不影响后面的字母



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

例如:

text
AB test
ab test
Ab tEst

所需输出:

text
AB Test
Ab Test
Ab TEst 

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

SELECT INITCAP(text)
FROM table 

如有任何建议,不胜感激。

这可能会有帮助。

创建一个函数并在select中使用。

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://stackoverflow.com/a/46344989/8077687

实际上已经有一个红移函数了:

INITCAP(string)

例子:

INITCAP('ab test')

将返回:

Ab test

相关内容

  • 没有找到相关文章

最新更新