PostgreSQL和PHP。从查询中提取会将空间添加到字符字符串中
我有一张有几个字段的桌子。一个字段是PostgreSQL和PHP。从查询中提取会将空间添加到字符字符串中,sql,arrays,string,postgresql,fetch,Sql,Arrays,String,Postgresql,Fetch,我有一张有几个字段的桌子。一个字段是char[128]。现在我在那里存储了一个字符串'hello'。 现在。在PHP中,我调用:arr=pg\u fetch\u数组(pg\u query('select*from table'))但是当我从这个列中获取值时,我会得到'hello'。当我使用pgAdmin执行“从表中选择字符长度(此字段)”时,我得到的是值5而不是6。你知道为什么PHP中有一个额外的空间吗 使用VARCHAR而不是CHAR可以解决此问题。将填充长度记录为: 字符(n),字符(n)
char[128]
。现在我在那里存储了一个字符串'hello'
。
现在。在PHP中,我调用:arr=pg\u fetch\u数组(pg\u query('select*from table'))
但是当我从这个列中获取值时,我会得到'hello'
。当我使用pgAdmin执行“从表中选择字符长度(此字段)”时,我得到的是值5而不是6。你知道为什么PHP中有一个额外的空间吗
使用
VARCHAR
而不是CHAR
可以解决此问题。将填充长度记录为:
字符(n),字符(n)固定长度,空白填充
例如:
t=# with c(t) as (values('abc'::char(3)),('a'::char(3)))
select t,concat(t,'.') from c;
t | concat
-----+--------
abc | abc.
a | a .
(2 rows)
关于长度:
t=# with c(t) as (values('abc'::char(3)),('a'::char(3)))
select t,concat(t,'.'),octet_length(t),char_length(t) from c;
t | concat | octet_length | char_length
-----+--------+--------------+-------------
abc | abc. | 3 | 3
a | a . | 3 | 1
(2 rows)
使用
字符变化
或文本
确实会改变这种行为 将填充长度记录为:
字符(n),字符(n)固定长度,空白填充
例如:
t=# with c(t) as (values('abc'::char(3)),('a'::char(3)))
select t,concat(t,'.') from c;
t | concat
-----+--------
abc | abc.
a | a .
(2 rows)
关于长度:
t=# with c(t) as (values('abc'::char(3)),('a'::char(3)))
select t,concat(t,'.'),octet_length(t),char_length(t) from c;
t | concat | octet_length | char_length
-----+--------+--------------+-------------
abc | abc. | 3 | 3
a | a . | 3 | 1
(2 rows)
使用
字符变化
或文本
确实会改变这种行为 不要使用char
它几乎没有意义。不要使用char
它几乎没有意义。