Seite 1 von 1

Abfrage: Sonderzeichen entfernen, Firebird

Verfasst: So 23. Jul 2023, 11:54
von malt14
Guten Tag,

in einer Spalte kommen öfters Sonderzeichen vor. Die Daten der Spalte benötige ich gelegentlich als Dateinamen, welche ich ohne Sonderzeichen verwende.

Kann man die Sonderzeichen in einer Abfrage entfernen oder ersetzen, damit man dies nicht manuell erledigen muss?

Mit "REPLACE" geht das, ist aber für eine Vielzahl von Sonderzeichen mühsam.

Kann "REGEXP_REPLACE" das?

Code: Alles auswählen

SELECT REGEXP_REPLACE("field_name", '[^A-Za-z0-9]', '') AS "Modified_field_name"
FROM "table_name"
"REGEXP_REPLACE" gibt es in Firebird nicht?

Kann man das in LibreOffice Firebird anders erreichen?
Idealerweise würde "Manuel d’Épictète!" in "ManueldEpictete" umgewandelt.

Grüße
Malt

Version: 7.5.5.2 (X86_64) / LibreOffice Community
OS: Windows 10.0

Re: Abfrage: Sonderzeichen entfernen, Firebird

Verfasst: So 23. Jul 2023, 15:35
von RobertG
Hallo Malt,

"REGEXP_REPLACE" ist Firebird unbekannt. Schau Dir dafür auch auf https://firebirdsql.org/en/firebird-rdbms/ die Dokumentation für Firebird 3.0 an.

Was vielleicht geht ist die Verbindung von SUBSTRING mit SIMILAR. Die kann zumindest reguläre Ausdrücke nutzen.

Gruß

Robert

Re: Abfrage: Sonderzeichen entfernen, Firebird

Verfasst: So 23. Jul 2023, 18:07
von malt14
Hallo Robert,

Dank für Deinen Hinweis.

Ich versuchte es mit:

Code: Alles auswählen

SELECT
 "name",

SUBSTRING(
    "name" FROM '[A-Za-z0-9]*' SIMILAR TO '[A-Za-z0-9]*'
  ) as "nameM"


 FROM "table"
führt zu:
"Syntaxfehler im SQL-Ausdruck"

Grüße
Malt

Re: Abfrage: Sonderzeichen entfernen, Firebird

Verfasst: Mo 24. Jul 2023, 07:56
von RobertG
Hallo Malt,

ich habe mir das auch noch einmal angeschaut: SUBSTRING kann ja lediglich einen Teilstring wiedergeben, nichts aber ersetzen. Damit wirst Du sowieso nicht fündig.

Mit einer Abfrage wird das also reichlich umständlich, wenn Du auch noch verschiedene Sprachen abdecken willst.

Gruß

Robert

Re: Abfrage: Sonderzeichen entfernen, Firebird

Verfasst: Mo 24. Jul 2023, 18:55
von malt14
Hallo Robert,

Dank für Deine Antwort.

Mit LO scheint es keine Möglichkeit zu geben.

Vielleicht findet künftig jemand eine Lösung.


Grüße
Malt