我想把每个单词的第一个字母大写。但是,如果第一个字母旁边的单词已经大写,那么它应该不受影响。
例如:
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
如有任何建议,不胜感激。
这可能会有帮助。
创建一个函数并在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