Postgresql字符变化奇怪的行为

时间:2017-10-03 12:37:00

标签: postgresql character-encoding varchar

我有一张表client_codecharacter varying(10)列。

现在,此查询不起作用:

insert into mydb.mytable (CLIENT_CODE) values ('0123456789');

我得到ERROR: value too long for type character varying(10)

在查询中放入9个字符时,运行正常。

我觉得很奇怪。这不是the definition of character varying我读过的。

我将PostgreSQL 9.3.19与ENCODING = 'UTF8'LC_CTYPE = 'French_France.1252'一起使用。

1 个答案:

答案 0 :(得分:2)

第1行下面的

是你的字符串,第二行是由我手动整理的:

t=# with d(s,t) as (values(1,'0123456789'),(2,'0123456789'))
select *,char_length(t),ascii(t),ascii(substring(t,2,1)) from d;
 s |     t      | char_length | ascii | ascii
---+------------+-------------+-------+-------
 1 | 0123456789 |          11 | 65279 |    48
 2 | 0123456789 |          10 |    48 |    49
(2 rows)

你有http://www.fileformat.info/info/unicode/char/feff/index.htm ZERO WIDTH NO-BREAK SPACE作为fisrt char - 你没有看到它,但postgres确实