我想在雪花資料庫中用它的大寫替換逗號(,)之后的第一個字母。下面給出的是我嘗試過的,但沒有奏效。
例如:
Apple,ball,cat --> Apple,Ball,Cat
Bulb,LED,tube --> Bulb,LED,Tube
SELECT REGEXP_REPLACE('Apple,ball,cat',',(\\\w)',UPPER('\\\1'));
,(\\\w)捕獲逗號后的字母,但UPPER('\\\1')不將其轉換為大寫。
uj5u.com熱心網友回復:
我不確定您是否可以在 REGEXP_REPLACE 中使用函式。
請使用內置的 INITCAP 函式
SELECT INITCAP('Apple,ball,cat', ',');
參考:INITCAP
或者像這樣:
SELECT LISTAGG(UPPER(LEFT(VALUE, 1)) || SUBSTRING(VALUE, 2, LEN(VALUE)), ',')
FROM TABLE(SPLIT_TO_TABLE('Apple,ball,cat', ',')) as t(val);
uj5u.com熱心網友回復:
不是“正則運算式”,但是如果您對 Javascript UDF 感興趣來做您需要的...
CREATE OR REPLACE FUNCTION fx_replaceInitOnly(
input varchar)
returns varchar
language javascript
as '
//logic from https://www.freecodecamp.org/news/how-to-capitalize-words-in-javascript/
var words = INPUT.split(",");
for (let i = 0; i < words.length; i ) {
words[i] = words[i][0].toUpperCase() words[i].substr(1);
}
output = words.join(",");
return output;
';
SELECT
'Apple,ball,cat,Bulb,LED,Tube' as str,
fx_replaceInitOnly(str) as new,
case WHEN str <> new THEN 'Changed' ELSE 'Same' END as test;
--STR NEW TEST
--Apple,ball,cat,Bulb,LED,Tube Apple,Ball,Cat,Bulb,LED,Tube Changed
uj5u.com熱心網友回復:
正則運算式不會幫助你提高你的字符,所以你可以結合 split_to_table 和 initcap:
SELECT LISTAGG( INITCAP(VALUE) ,',' )
FROM TABLE(SPLIT_TO_TABLE('Apple,ball,cat',','));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/317352.html
