Postgresql:查询 Varchar 需要大括号吗?
Postgresql: Querying Varchar Requires Curly Braces?
编辑:这是 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
。
原因很简单 - 这不是 varchar
列。
注意到方括号了吗? character varying []
这意味着它是字符串数组。
您可以在此处阅读有关数组的更多信息:https://www.postgresql.org/docs/current/static/arrays.html
通过使用大括号,您可以创建一个包含一个元素的数组:'{test@test.com}'
现在您正在比较苹果与苹果(数组与数组)
pgAdmin 不允许您转换该列,因为它"know" 不支持您将字符串数组转换为单个字符串的精确程度。
您可以在此处查看 PostgreSQL 中数组上可用的函数:https://www.postgresql.org/docs/current/static/functions-array.html
编辑:这是 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
。
原因很简单 - 这不是 varchar
列。
注意到方括号了吗? character varying []
这意味着它是字符串数组。
您可以在此处阅读有关数组的更多信息:https://www.postgresql.org/docs/current/static/arrays.html
通过使用大括号,您可以创建一个包含一个元素的数组:'{test@test.com}'
现在您正在比较苹果与苹果(数组与数组)
pgAdmin 不允许您转换该列,因为它"know" 不支持您将字符串数组转换为单个字符串的精确程度。
您可以在此处查看 PostgreSQL 中数组上可用的函数:https://www.postgresql.org/docs/current/static/functions-array.html