PostgreSQL:查询Varchar是否需要花括号?

时间:2018-08-06 20:13:26

标签: postgresql pgadmin

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

1 个答案:

答案 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