2017-08-03 1 views
1

Was ich möchte ist eine Zeichenfolge wie folgt zu drehen;regexp_replace in postgres nur mit einem einzigen Leerzeichen zu halten

10 - 15 st. pan,cras

zu

10 - 15 ST PANCRAS

ich die meisten der Weg mit

`select upper(regexp_replace('10 - 15 st. pan,cras', '[^a-zA-Z 0-9-]', '', 'g'));` 

Aber ich kann nicht scheinen, um die doppelte Leerzeichen um die Nummer zu entfernen. Ich habe es versucht und einen zusätzlichen Platz im Ausdruck hinzugefügt.

`select upper(regexp_replace('10 - 15 st. pan,cras', '[^a-zA-Z 0-9-]', '', 'g'));` 

Aber kein Unterschied im Ergebnis. Ich verwende regexp_replace, da ich die substring Syntax schwerer zu folgen finde. Auf 9,6 Zeichenfolge in text

Antwort

1

gespeichert ist, können Sie Raum kollabiert nur ein Ausdruck, wie folgt hinzufügen:

t=# select regexp_replace('q   q','(){1,}',' ','g'); 
regexp_replace 
---------------- 
q q 
(1 row) 

Es mit Leerzeichen ersetzt, wenn in Folge nach Räumen ein oder mehrere findet.

so in Ihrem Fall

t=# select regexp_replace(upper(regexp_replace('10 - 15 st. pan,cras', '[^a-zA-Z 0-9-]', '', 'g')),'(){1,}',' ','g'); 
    regexp_replace 
-------------------- 
10 - 15 ST PANCRAS 
(1 row) 
+0

wird das schön ist, ist es in der Dokumentation? –

+0

Ja, eine kurze Anleitung finden Sie unter https://www.postgresql.org/docs/current/static/functions-matching.html –

Verwandte Themen