【发布时间】:2010-12-28 10:09:42
【问题描述】:
utf 编码的字符串末尾包含 Zwnj(零宽度非连接符)并存储在数据库中。 是否可以在选择语句期间删除该字符。我试过 trim() 但没有用。
【问题讨论】:
标签: postgresql unicode width zero
utf 编码的字符串末尾包含 Zwnj(零宽度非连接符)并存储在数据库中。 是否可以在选择语句期间删除该字符。我试过 trim() 但没有用。
【问题讨论】:
标签: postgresql unicode width zero
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)
【讨论】:
你需要使用replace(your_column, 'Zwnj','')而不是trim()
【讨论】:
replace(your_column, E'\u9876','') 之类的东西(用 Unicode 文字替换 9876)。 postgresql.org/docs/9.1/static/…