Как построить регулярное выражение, которое превращает каждую первую букву слова "капитал" в SAP HANA?
Как построить регулярное выражение, которое делает каждую первую букву слова заглавной?
Я пытался использовать это:
select Upper(LEFT('this iS hana',1)) || lower(right(('this iS hana'),
length('this iS hana')-1)) FROM DUMMY;
Это дает мне результат:
Это хана
тогда как я хочу достичь:
Это Хана.
1 ответ
Насколько мне известно, вы не можете достичь этого с помощью регулярных выражений в SAP HANA. Обычно с помощью Perl-совместимых регулярных выражений (PCRE) вы можете сделать что-то вроде:
SELECT REPLACE_REGEXPR('\b(\w)(\w+)'
IN 'your string here' WITH '\U\1\E\2') FROM DUMMY;
И HANA, очевидно, поддерживает PCRE, поэтому теоретически он должен работать на основе документации REPLACE_REGEXPR:
pattern:: =!! Perl-совместимое регулярное выражение
Шаблон поиска на основе Perl-совместимого регулярного выражения (PCRE).
К сожалению, \U
а также \E
конструкции, похоже, не реализованы в HANA.
Хорошей новостью является то, что начиная с HANA2 SP01, появилась новая строковая функция, которая может примерно достичь того, что вам нужно: INITCAP. Обратите внимание, что это также изменяет остальные буквы из слов в строчные:
Преобразует первый символ каждого слова в указанной строке в верхний регистр и преобразует оставшиеся символы в нижний регистр.
Так что вы можете просто сделать:
SELECT INITCAP('your string here') FROM DUMMY;