Postgresql:查询Varchar需要花括号吗



EDIT:这是pgAdmin4显示的问题。我可以将以前声明的列数据类型character varying []更改为character varying(当用户永远无法更改时(,这让我相信我在查询varchar,而实际上我在查询varchar[]

为什么查询varchar列需要这样的大括号

SELECT * FROM users WHERE email = '{test@test.com}'

删除大括号提示ERROR: malformed array literal...

我使用(PostgreSQL(10.4和pgAdmin4作为接口。电子邮件列的类型为character varying [],pgAdmin4不允许我将其更改为character varying

原因很简单——这不是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

最新更新