Postgresql 字符变化奇怪的行为

Postgresql character varying strange behaviour

我有一个 table,其中 client_code 是一个 character 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 行下方是复制粘贴的字符串,第二行是我手动输入的:

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 作为第一个字符 - 你看不到它,但 postgres 有