regexp_replace beim Parsen aus ax_bodenstufe
Closed this issue · 1 comments
Hallo Jürgen,
meine Herausforderung ist es, die Klassenzeichen der Bodenschätzung darzustellen. Dieses komplexe Element setzt sich aus verschiedenen Textbestandteilen und Zahlen zusammen.
alkis_import erzeugt dafür verschiedene Views. Momentan fehlten hier noch ein paar Views. Für die Bodenstufe (v_bschaetz_bodenstufe), Klimastufe, Entstehungsart und Wasserverhaeltnisse habe ich diese in 4_postnas-keytables.sql ergänzt.
Klimastufe, Entstehungsart und Wasserverhaeltnisse habe ich auch einzelne Views geteilt, weil in GID7.1.2 aus ehemals einer "Tabelle" ax_entstehungsartoderklimastufewasserverhaeltnisse nun die drei einzelnen Tabellen AX_Entstehungsart, AX_Klimastufe und AX_Wasserverhaeltnisse geworden sind. Das aber nur am Rande...
Das eigentliche Problem ist aber das Parsen des Textes 'Bodenstufe ("(III)")' aus AX_Bodenstufe. Als Ergebnis müsste '(III)' erzeugt werden, es wird aber 'III)"' daraus.
Erzeugen desr Views in 4_postnas-keytables.sql:
SELECT alkis_dropobject('v_bschaetz_bodenstufe');
CREATE VIEW v_bschaetz_bodenstufe AS
SELECT
wert::int AS wert
,regexp_replace( beschreibung, E'^.*\\((.*)\\)$', E'\\1') AS kurz
,beschreibung AS bezeichner
FROM ax_bodenstufe;
SELECT alkis_dropobject('v_bschaetz_klimastufe');
CREATE VIEW v_bschaetz_klimastufe AS
SELECT
wert::int AS wert
,regexp_replace( beschreibung, E'^.*\\((.*)\\)$', E'\\1') AS kurz
,beschreibung AS bezeichner
FROM ax_klimastufe;
SELECT alkis_dropobject('v_bschaetz_entstehungsart');
CREATE VIEW v_bschaetz_entstehungsart AS
SELECT
wert::int AS wert
,regexp_replace( beschreibung, E'^.*\\((.*)\\)$', E'\\1') AS kurz
,beschreibung AS bezeichner
FROM ax_entstehungsart;
SELECT alkis_dropobject('v_bschaetz_wasserverhaeltnisse');
CREATE VIEW v_bschaetz_wasserverhaeltnisse AS
SELECT
wert::int AS wert
,regexp_replace( beschreibung, E'^.*\\((.*)\\)$', E'\\1') AS kurz
,beschreibung AS bezeichner
FROM ax_wasserverhaeltnisse ;
Das Problem sind offensichtlich die doppelten Klammern im Text 'Bodenstufe ("(III)")'. Wenn man daraus den Inhalt zwischen den Anführungszeichen extrahieren möchte, kommt man scheinbar an die Grenzen von regexp_replace.
Vielleicht gibt's ja eine Lösung für die Problematik...
Mit freundlichen Grüßen
Jens
So schnell kommt man nicht an die Grenzen von RE.