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 有
我有一个 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 有