Extrahieren Sie mit Regexp vier Ziffern aus einer Spalte
-
28-09-2020 - |
Frage
Ich sitze in einer Datenbank, in der eine Spalte zwei Datentypen enthält ;)
Beispiel
"1";"When the Wind Blows 0275";"James Patterson "
"4";"The Reluctant Fundamentalist 1026";"Mohsin Hamid";
Der Benutzer dachte, es wäre auf diese Weise leicht zu durchsuchen ...
Jetzt versuche ich, das Problem zu beheben, indem ich die ID aus dem Titelfeld entferne und in eine eigene Spalte einfüge.
Wie wähle ich den Titel mit einem regulären Ausdruck aus, sodass ich am Ende des Titels nur die vierstellige Zahl erhalte?Diese Zahl kann mit einer Null beginnen und der Titel könnte mehr Ziffern als nur diese 4 enthalten.
Es gibt auch keine Garantie dafür, dass es sich bei den Ziffern um die letzten vier Zeichen im Titel handelt, manchmal folgen einige Leerzeichen. SUBSTRING
wird in diesem Fall nicht funktionieren
danke für die Hilfe!
Lösung
Wenn die vier Ziffern, die Sie extrahieren müssen, entweder genau am Ende der Zeichenfolge stehen oder nur von Leerzeichen gefolgt werden, wäre es wahrscheinlich am einfachsten, sie mit zu extrahieren RIGHT()
Funktion nach dem Entfernen der nachgestellten Leerzeichen mit der RTRIM()
Funktion:
SELECT
RIGHT(RTRIM(YourColumnName), 4) AS SomeCode
FROM
YourTableName
WHERE
...
;