С оговоркой, что это не серебряная пуля, я задаю этот вопрос и даю свой собственный ответ, поскольку после разумных усилий колледжа я обнаружил, что у меня нет решений для PostgreSQL.
В моем случае задача состоит в том, чтобы преобразовать набор предложений, состоящих в основном только из верхнего регистра, в разумное факсимиле абзаца, используя заглавные буквы только для первой буквы каждого предложения. Если это решение существует, то либо я слепой, либо оно было прилично хорошо спрятано.
Так, например, как мне преобразовать
THE NAME IS BOND. JAMES BOND. 007. AND THIS IS ONE COOL PIECE OF CODE.
К
The name is bond. James bond. 007. And this is one cool piece of code.
?
1 ответ
Вот что я придумал. Буду рад наградить ответом на лучшее решение!
WITH fixed_sentences_source AS (
WITH single_sentences_source AS (
WITH arrays_source AS (
SELECT
regexp_split_to_array(LOWER('THE NAME IS BOND. JAMES BOND. 007. AND THIS IS ONE COOL PIECE OF CODE.'), '\. ' ) AS arrays
)
SELECT TRIM(UNNEST(arrays)) AS single_sentences
FROM arrays_source
)
SELECT
UPPER(SUBSTRING(single_sentences, 1, 1)) || SUBSTRING(single_sentences, 2, LENGTH(single_sentences) - 1) AS fixed_sentence
FROM single_sentences_source
WHERE
single_sentences <> ''
)
SELECT ARRAY_TO_STRING(ARRAY(SELECT fixed_sentence FROM fixed_sentences_source), '. ')
Похожие вопросы
Новые вопросы
postgresql
PostgreSQL — это система управления реляционными базами данных (RDBMS) с открытым исходным кодом, доступная для всех основных платформ, включая Linux, UNIX, Windows и OS X. Задавая вопросы, указывайте свою версию Postgres. Обратитесь к dba.stackexchange.com для вопросов, касающихся администрирования или дополнительных функций.