【问题标题】: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 

任何建议将不胜感激。

【问题讨论】:

    标签: sql amazon-web-services amazon-redshift


    【解决方案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://stackoverflow.com/a/46344989/8077687的参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2014-04-11
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多