Thread: Feature request for INITCAP() function

Feature request for INITCAP() function

From
Jeff Gerbracht
Date:
It would be great if there was a way to set exceptions to the 'word' delimiter list used in the INITCAP() function.    For example, I have hyphenated words like blue-green or possessives and contractions like don't and cat's tail
These become Blue-Green, Don'T and Cat'S Tail.

Being able to pass in a set of delimiter exceptions like hyphen and single quote would make this function much more useful for our specific use cases.
   
   Thanks for considering,
      Jeff
--
Jeff Gerbracht
Cornell Lab of Ornithology

Re: Feature request for INITCAP() function

From
Laurenz Albe
Date:
On Thu, 2023-11-30 at 21:08 -0500, Jeff Gerbracht wrote:
> It would be great if there was a way to set exceptions to the 'word' delimiter list used in
> the INITCAP() function.    For example, I have hyphenated words like blue-green or
> possessives and contractions like don't and cat's tail
> These become Blue-Green, Don'T and Cat'S Tail.
>
> Being able to pass in a set of delimiter exceptions like hyphen and single quote would make
> this function much more useful for our specific use cases.

That would pretty quickly drift into locale-dependent rules.  Such a function would be even
more special-case than the current "initcap()", which is already pretty specific to certain
languages.  I don't know if there is enough value for the general public in it.

But it should be easy to implement it yourself, for example in PL/pgSQL.  Why don't you
try that?

Yours,
Laurenz Albe



Re: Feature request for INITCAP() function

From
"Daniel Verite"
Date:
    Jeff Gerbracht wrote:

> It would be great if there was a way to set exceptions to the 'word'
> delimiter list used in the INITCAP() function.    For example, I have
> hyphenated words like blue-green or possessives and contractions like
> don't and cat's tail
> These become Blue-Green, Don'T and Cat'S Tail.

An ICU collation may produce better results for this:

select initcap('blue-green don''t cat''s tail' COLLATE "en-x-icu");
       initcap
-----------------------------
 Blue-Green Don't Cat's Tail

With hyphens, it's not clear what the results should be.
Looking at the IMDb movies database [1] for instance, titles have
a mix of upper and lower case following the hyphen, even within the
same english title:

Hell-to-Pay Austin
The Co-respondent
A Pit-boy's Romance
A Cowboy's Mother-in-Law
Our Parents-In-Law
The Good-for-Nothing
When the Fire-Bells Rang
The post-millennial wave
...

[1] https://datasets.imdbws.com/


Best regards,
--
Daniel Vérité
https://postgresql.verite.pro/
Twitter: @DanielVerite