PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment diviser un nom en nom de famille et initiales

La regex utilisée dans PostgreSQL est en fait implémenté à l'aide d'un progiciel écrit par Henry Spencer. Ce n'est pas bizarre, ça a ses propres avantages, particularités.

L'une des différences par rapport aux moteurs de regex NFA habituels est la limite de mot. Ici, \Y correspond à une limite de non-mot. Les autres modèles dont vous avez besoin sont assez connus.

Donc, vous devez utiliser '^(\w+)|\Y\w' motif et un '\1' remplacement.

Détails :

  • ^ - début de l'ancre de chaîne
  • (\w+) - Groupe de capture 1 caractères correspondants de 1 mot ou plus (ceci sera référencé par \1 du motif de remplacement)
  • | - ou
  • \Y\w - un caractère de mot précédé d'un autre caractère de mot.

Le \1 est appelé un remplacement backreference numéroté , qui place simplement la valeur capturée avec le groupe 1 dans le résultat de remplacement.