如何在雪花中大写第一个字母(不改变其他字母)

How to uppercase first letter (without changing the others) in Snowflake

我知道 INITCAP() and ,但我的问题不同:

如何在给定字符串中仅将 的第一个字母大写,并保留字符串的其余部分没动过?

INITCAP() 只能将首字母大写——但是,它将小写 其他所有字母,如文档中所述:

<delimiters> specified as an empty string (i.e. '') instructs INITCAP to ignore all delimiters, including whitespace characters, in the input expression (i.e. the input expression is treated as a single, continuous word). The resulting output is a string with the first character capitalized (if the first character is a letter) and all other letters in lowercase.

设法使用一些字符串操作来做到这一点:

SELECT INSERT(my_string, 1, 1, UPPER(LEFT(my_string, 1)));

UPPER(LEFT(my_string, 1)) 将提取字符串的第一个字母,并将其大写。

INSERT() 会将字符串的一部分替换为其他内容——在这种情况下,第一个字母将替换为其大写版本。

另一种选择是

UPPER(LEFT(my_string,1))||SUBSTR(my_string,2)

如果我们使用相同的空白模式,将以 1:

的优势赢得代码高尔夫

INSERT(my_string,1,1,UPPER(LEFT(my_string,1)))