la suppression ZWNJ caractère de chaîne dans Postgres pendant l'instruction select
-
13-10-2019 - |
Question
La chaîne codée utf contient ZWNJ (zéro largeur non menuisier) à l'extrémité et est stocké dans la base de données. Est-il possible de supprimer ce caractère lors de l'instruction select. J'ai essayé trim () mais ne fonctionne pas.
La solution
CREATE TABLE test (x text);
INSERT INTO test VALUES (E'abc');
INSERT INTO test VALUES (E'foo\u200C'); -- U+200C = ZERO WIDTH NON-JOINER
SELECT x, octet_length(x) FROM test;
x │ octet_length
─────┼──────────────
abc │ 3
foo │ 6
(2 rows)
CREATE TABLE test2 AS SELECT replace(x, E'\u200C', '') AS x FROM test;
SELECT x, octet_length(x) FROM test2;
x │ octet_length
─────┼──────────────
abc │ 3
foo │ 3
(2 rows)
Autres conseils
Vous devez utiliser replace(your_column, 'Zwnj','')
au lieu de trim ()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow