Как построить регулярное выражение, которое превращает каждую первую букву слова "капитал" в 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;
Другие вопросы по тегам