Просто для удовольствия, версия XML, которая в нижнем регистре вводит любое слово (токен), начинающееся с любого знака препинания в строке, которая уже прошла через initcap
:
select *
from xmltable(
'string-join(
for $t in tokenize($s, " ")
return if (matches($t, "^\p{P}")) then lower-case($t) else $t,
" ")'
passing initcap('the /soap') as "s"
);
Result Sequence
--------------------------------------------------------------------------------
The /soap
И та, которая заменяетinitcap
Звоните:
select *
from xmltable(
'string-join(
for $t in tokenize($s, " ")
return concat(upper-case(substring($t, 1, 1)), lower-case(substring($t, 2))),
" ")'
passing 'the /soap' as "s"
);
Result Sequence
--------------------------------------------------------------------------------
The /soap