PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Internationalisierter regulärer Ausdruck in Postgresql

PostgreSQL unterstützt keine Zeichenklassen, die auf der Unicode-Zeichendatenbank basieren, wie dies bei .NET der Fall ist. Sie erhalten den eher standardmäßigen [[:alpha:]] Zeichenklasse, aber dies ist vom Gebietsschema abhängig und wird es wahrscheinlich nicht abdecken.

Möglicherweise können Sie davonkommen, indem Sie nur die ASCII-Zeichen, die Sie nicht möchten, auf die schwarze Liste setzen und alle Nicht-ASCII-Zeichen zulassen. zB etwas wie

[^\s!"#$%&'()*+,\-./:;<=>?\[\\\]^_`~]+

(JavaScript hat auch keine Nicht-ASCII-Zeichenklassen. Oder sogar [[:alpha:]] .)

Zum Beispiel gegeben v_text als zu bereinigende Textvariable:

-- Allow internationalized text characters and remove undesired characters
v_text = regexp_replace( lower(trim(v_text)), '[!"#$%&()*+,./:;<=>?\[\\\]\^_\|~]+', '', 'g' );