我尝试将名为names
的列类型从text更改为长度为L的VARCHAR。其中L是names
的最大长度。我尝试使用内部/子查询,如下所示:
这甚至是可能的吗?有任何替代方案可以在一个查询中做到这一点吗?
ALTER TABLE friends
ALTER COLUMN names TYPE VARCHAR(
SELECT MAX(LENGTH(names))
FROM friends
)
字符串
我在PgAdmin 4 SQL控制台中得到以下错误:
ERROR: syntax error at or near "SELECT"
LINE 3: SELECT MAX(LENGTH(card_number))
型
2条答案
按热度按时间0tdrvxhp1#
你可以在Postgres上使用
VARCHAR(MAX)
的等价物,这可以通过简单地使用VARCHAR
来实现,没有大小:字符串
请注意,对于
VARCHAR
,任何给定的字符串都只会使用该字符串的存储空间,没有填充(不像CHAR
)。或者,我们可以使用
TEXT
类型:型
5cnsuln72#
你可能会更好地使用
text
。提出这个问题:在这种情况下,你只能使用整数常量,所以要实现“在一个查询”中,你需要动态SQL。字符串
| 数据类型|字符最大长度|
| --|--|
| character varying| 60 |
型
| 数据类型|字符最大长度|
| --|--|
| character varying| 9 |
fiddle的