当前位置: 首页 > 知识库问答 >
问题:

在postgresql中将列从字符串更改为字符串数组

彭成天
2023-03-14

下面是一个名为“containers”的表的片段。

       Column       |            Type             |            Modifiers            
--------------------+-----------------------------+---------------------------------
 id                 | uuid                        | not null
 name               | character varying(255)      | 
 products           | character varying           | default '{}'::character varying

如何将“产品”列更改为“字符变化[]”,并将相应的修饰符更改为默认值“{}”::字符变化[]?本质上,我想将字符串转换为字符串数组。注意,“产品”列对字符数没有限制。

alter table "containers" alter "products" type character varying[];

抛出以下错误

错误:“products”列不能转换为不同类型的字符[]

共有1个答案

陶烨赫
2023-03-14

Postgres中没有从varcharvarchar[]的隐式转换。您必须指示如何执行类型的转换。您应该在USING表达式子句中执行此操作(请参阅留档中的ALTER TABLE)。在这种情况下,您必须删除并重新创建列的默认值,如留档中所述:

SET DATA TYPE的USING选项实际上可以指定任何涉及行的旧值的表达式;也就是说,它可以引用其他列以及正在转换的列。这允许使用SET数据类型语法进行非常一般的转换。由于这种灵活性,USING表达式不应用于列的默认值(如果有);结果可能不是默认值所需的常量表达式。这意味着,当没有从旧类型转换为新类型的隐式或赋值时,即使提供了USING子句,SET DATA type也可能无法转换默认值。在这种情况下,使用drop default删除默认值,执行ALTER TYPE,然后使用SET default添加合适的新默认值。

alter table containers alter products drop default;
alter table containers alter products type text[] using array[products];
alter table containers alter products set default '{}';

这三个操作可以在一个语句中完成:

alter table containers 
    alter products drop default,
    alter products type text[] using array[products],
    alter products set default '{}';
 类似资料:
  • 我必须使用itextpdf api创建一个pdf。我在这个项目中也有j汤api。我已经设法创建了一个pdf,它满足了所有的要求,除了一件事。pdf中的一列单元格必须从网络应用程序UI从html内容中获取它们的内容文本。所以,我把所有的标签和所有的标签都拿到了pdf。像这样: 现在我找到了一种通过使用Jsoup摆脱标记的方法。解析(cellContentText)。text(); 然而,现在没有线路

  • 问题内容: 我有一个; 我想转换为字符串数组。我该怎么做?有内置的Java函数吗?可以手动完成,但是我正在搜索Java内置函数。 我想要一个数组,其中字符串的每个字符都是一个字符串。像char’n’现在将是存储在数组中的字符串“ n”。 问题答案: 要开始你的作业,请在正则表达式上拆分字符串,该表达式可以为空字符串: 产生数组: 留空的第一条目留给读者练习:-) 注意:在Java 8中,不再包含空

  • 问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:

  • 假设我有以下数组列表: 并且必须遵守规则: 从数组列表 1 开始,我想形成新的以下数组列表: <李>猫狗 <李>鼠蛇 无论如何都可以这样做。我目前还没有找到任何字符串到字符串转换的内容。

  • 我想将我的IDE连接到OracleSQLDeveloper。因此我必须使用这行代码: 要输入密码,我使用: 我想知道如何将这个JPasswordField转换成字符串,这样我就可以使用代码I的“Connect”行(这一行仅适用于字符串) 编辑:这是输入密码的代码。我在stackoverflow上找到了它:

  • 问题内容: 我需要将一个String拆分为单个字符String的数组。 例如,拆分“ cat”将得到数组“ c”,“ a”,“ t” 问题答案: 这将产生