EDIT:这是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
。
答案 0 :(得分:2)
原因很简单-这不是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