Domanda

La stringa codificata utf contiene zwnj (zero larghezza non falegname) alla fine e viene memorizzato nel database. E 'possibile rimuovere quel personaggio durante select. Ho provato assetto (), ma non funziona.

È stato utile?

Soluzione

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)

Altri suggerimenti

È necessario utilizzare replace(your_column, 'Zwnj','') al posto di assetto ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top