So habe ich eine Spalte, incarceration_date, das ist eigentlich ein Textfeld und ich möchte es als Datum zu werfen. Normalerweise kein Problem, aber es scheint, dass jeder Wert in dieser Spalte ein Leerzeichen (& # 160) am Ende hat, das natürlich den Datumsfunktionsfehler macht.Wie entferne ich Leerzeichen aus einer Zeichenfolge in PostgreSQL?
Ich habe zwei verschiedene Ansätze für dieses Problem ohne Erfolg ausprobiert.
Versuch 1:
trim(both chr(65279) from incarceration_date)::DATE
Versuch 2:
regexp_replace(incarceration_date, '\s+$', '')::DATE
Ich denke, der zweite Versuch fehlschlägt, weil [[: space:]] nicht Null Breite Raum ohne Pause enthält.
In dieser speziellen Instanz haben die Felder alle die gleiche Breite, so dass ich dieses Problem umgehen kann, indem ich nur die ersten zehn Zeichen an die Datumsfunktion übergebe. Ich habe jedoch einige allgemeine Textreinigungsfunktionen, die ich für importierte Daten verwende, und ich möchte, dass sie mit diesem Zeichen umgehen können.
Eine Probe String sieht wie folgt aus:
"06/17/2011 "
Aber ich bin mir nicht sicher, dass das Problem Charakter Kopien SO richtig.
Ich benutze PostgreSQL-9.5.0.
der Ausgang einer Zeile der incarceration_date Spaltenausgangs durch encode (incarceration_date :: bytea 'hex') ist:
30362f31372f32303131c2a0
Alle Zeilen mit c2a0
beenden.
Die Servercodierung ist UTF8.
Sie könnten alles außer '[0-9 /]' aus der Zeichenkette entfernen – ThiefMaster
Können Sie das Beispielergebnis von 'encode (incarceration_date :: bytea, 'hex')' '? Stellen Sie auch die Kodierung Ihrer Datenbank zur Verfügung ('show server_encoding;') – Abelisto
@Abelisto Ich habe diese Information zu der Frage hinzugefügt. –