编辑:这是pgAdmin4显示的一个问题,我可以将以前声明的character varying []列数据类型更改为character varying (当用户永远不会这样做时),这使我相信我在查询varchar,而实际上我是在查询varchar[]。
为什么查询varchar列需要像这样的花括号?
SELECT * FROM users WHERE email = '{test@test.com}'
移除花括号将提示ERROR: malformed array literal...
我使用(PostgreSQL) 10.4和pgAdmin 4作为接口。电子邮件列的类型是character varying [],pgAdmin4不允许我将其更改为character varying。
发布于 2018-08-06 20:15:48
原因很简单--这不是一个varchar列。
注意方括号?character varying []
这意味着它是字符串数组。
您可以在这里阅读更多关于数组的信息:https://www.postgresql.org/docs/current/static/arrays.html
通过使用花括号创建一个由一个元素组成的数组:'{test@test.com}'
现在你把苹果和苹果做比较(数组和数组)
pgAdmin不允许您转换列,因为它“不知道”要如何将字符串数组转换为单个字符串。
您可以在这里检查PostgreSQL中的数组中哪些函数可用:https://www.postgresql.org/docs/current/static/functions-array.html
https://stackoverflow.com/questions/51714978
复制相似问题