在select语句中从postgres中的字符串中删除zwnj字符

时间:2010-12-28 10:09:42

标签: postgresql unicode width zero

utf编码的字符串末尾包含Zwnj(零宽度非连接符)并存储在数据库中。 是否可以在select语句中删除该字符。我尝试了trim()但是没有用。

2 个答案:

答案 0 :(得分:2)

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)

答案 1 :(得分:0)

您需要使用replace(your_column, 'Zwnj','')代替trim()