2010-12-28 2 views

답변

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) 
+0

그게 내가 찾고 좋은 작품입니다. – kiranking

0

당신은 트림 대신 replace(your_column, 'Zwnj','')를 사용해야합니다()

+0

@ahwnn이 작동하지 않습니다. 대체 (kan_text, 'zwnj', ''), 대체 (kan_text, '& Zwnj', '')를 시도했습니다. 쿼리가 실행되면 끝에는 파이프 기호처럼 보이는 문자가 있습니다. – kiranking

+0

zwnj는 당신이 우리에게 준 예입니다. (나는 그것이 무엇인지 알지 못합니다). 물론 교체 할 실제 캐릭터로 교체해야합니다. –

+0

@kiranking : 이스케이프 처리 된 문자열 리터럴을 작성하여 백 슬래시 이스케이프 시퀀스 16 진수 또는 유니 코드를 사용하여 문자를 나타낼 수 있습니다. 'replace (your_column, E '\ u9876', '')'(유니 코드 리터럴로'9876'을 대체)와 같은 것입니다. http://www.postgresql.org/docs/9.1/static/sql-syntax-lexical.html#SQL-BACKSLASH-TABLE – kgrittn

관련 문제