我需要在Snowflake中的SQL qwery中大写某些单词的第一个字母。
我目前正在使用这个函数:
SELECT ...
case when FLAG1 is null then upper(FLAG2) else FLAG1 END as STATUS,
...;但是,UPPER()函数会将我的所有FLAG2单词全部大写。有谁知道如何将Snowflake中单词的第一个字母大写?
发布于 2021-03-12 03:36:04
使用initcap()函数,它返回输入字符串(expr),每个单词的第一个字母为大写,后面的字母为小写。
如果只希望字符串中的第一个字母大写,忽略单词分隔符(即,输入表达式被视为单个连续的单词),请将空字符串指定为分隔符参数
INITCAP( str, '')发布于 2021-03-12 03:32:36
SELECT column1, IFF(column1, UPPER(SUBSTRING(column2,1,1)) || LOWER(SUBSTRING(column2,2)), column2)
FROM VALUES
(true,'all_lower'),
(true, 'ALL_UPPER'),
(true, 'mIxEd'),
(false,'all_lower'),
(false, 'ALL_UPPER'),
(false, 'mIxEd');它可以稍微拆开包装,看看工作中的部件。
SELECT column1 as flag
,column2 as orig
,UPPER(SUBSTRING(column2,1,1)) || LOWER(SUBSTRING(column2,2)) as first_upper
,IFF(flag, first_upper, orig)
FROM VALUES
(true,'all_lower'),
(true, 'ALL_UPPER'),
(true, 'mIxEd'),
(false,'all_lower'),
(false, 'ALL_UPPER'),
(false, 'mIxEd');这就给出了:
FLAG ORIG FIRST_UPPER IFF(FLAG, FIRST_UPPER, ORIG)
TRUE all_lower All_lower All_lower
TRUE ALL_UPPER All_upper All_upper
TRUE mIxEd Mixed Mixed
FALSE all_lower All_lower all_lower
FALSE ALL_UPPER All_upper ALL_UPPER
FALSE mIxEd Mixed mIxEdhttps://stackoverflow.com/questions/66588994
复制相似问题