Ersetzen von unicode-Zeichen in PostgreSQL
Ist es möglich, zu ersetzen Sie alle vorkommen eines Zeichens (ausgedrückt in unicode) mit einem anderen Charakter (ausgedrückt in unicode) in ein varchar-Feld in der PostgreSQL?
Habe ich versucht, etwas wie dieses:
UPDATE mytable
SET myfield = regexp_replace(myfield, '\u0050', '\u0060', 'g')
Aber es scheint, dass es wirklich schreibt den string '\u0060' in das Feld und nicht den Charakter der entsprechenden code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend der PostgreSQL-Dokumentation auf der lexikalischen Struktur, sollten Sie
U&
syntax:Können Sie auch die PostgreSQL-spezifische escape-string form
E'\u0050'
. Dies funktioniert auch auf älteren Versionen als die unicode-escape-form macht, aber die unicode-escape-form bevorzugt wird, die für neuere Versionen. Dies sollte zeigen, was Los ist:Sollte es funktionieren mit dem "- Zeichen, entsprechend code", es sei denn, kommen client-oder andere Schicht in der Lebensmittel-Kette mangles Ihren code!
Nutzen Sie auch
translate()
oderreplace()
für diesen einfachen job. Viel schneller alsregexp_replace()
.translate()
ist auch gut für mehrere einfache Ersetzungen in einer Zeit.Und vermeiden leer updates mit einem
WHERE
- Klausel. Viel schneller noch, und vermeidet Tabelle Boot und zusätzlicheVACUUM
Kosten.Wenn Sie laufen in Probleme, verwenden Sie die encoding - @mvp zur Verfügung gestellt: