当前位置: 首页 > 面试题库 >

如何在PostgreSQL的选择查询中将表的列字段值中的字符串拆分为多行

公良文彬
2023-03-14
问题内容

表格1

ID     ITEM
-----------------------
1      a|b|c
2      x|y|z
3      Q||S
4      ||||
5      J|K|Y|U

我想按以下方式将ITEM上方插入table2

表2

SLNO  ID   ITEMS
------------------------
1      1    a
2      1    b
3      1    c
4      2    x
5      2    y
6      2    z
7      3    Q
8      3    S
9      5    J
10     5    K
11     5    Y
12     5    U

所以我用过

INSERT INTO table2("ID","ITEMS")SELECT  ID,split_part("ITEM", '|',1) AS ITEMS FROM  table1

问题是split_part()需要指定位置索引,因此它只拆分并显示字符表示的第一个位置,

ID  ITEMS
-----------
1   a
2   x
3   Q
5   J

所以我如何达到上述目标


问题答案:

您可以将字符串转换为数组,然后取消嵌套该数组:

select t.id, i.item
from the_table t
  cross join unnest(string_to_array(t.items, '|')) as i(item);

如果要排除空元素(例如,在该行中4 ||||,可以使用:

select t.id, i.item
from the_table t
  cross join unnest(string_to_array(t.items, '|')) as i(item)
where nullif(trim(i.item),'') is not null;

在线示例



 类似资料:
  • 问题内容: 我正在寻找一种通过查询来连接组中字段字符串的方法。因此,例如,我有一张桌子: 我想按company_id分组以获取类似信息: mySQL中有一个内置函数来执行此group_concat 问题答案: PostgreSQL 9.0或更高版本: Postgres的最新版本(自2010年末开始)具有可以完全满足问题要求的功能,甚至允许您指定分隔符字符串: Postgres 9.0还增加了在任何

  • 本文向大家介绍如何在R中将字符串列拆分为多列?,包括了如何在R中将字符串列拆分为多列?的使用技巧和注意事项,需要的朋友参考一下 这可以在tidyr软件包的帮助下完成。 示例

  • 问题内容: 我希望我的Python函数拆分一个句子(输入)并将每个单词存储在列表中。我当前的代码拆分了句子,但没有将单词存储为列表。我怎么做? 问题答案: 这应该足以将每个单词存储在列表中。 words已经是句子中单词的列表,因此不需要循环。 其次,这可能是拼写错误,但是你的循环有些混乱。如果你确实确实想使用附加,它将是: 不

  • 问题内容: 一些外部数据供应商希望给我一个数据字段-管道分隔的字符串值,我觉得这很难处理。 没有应用程序编程语言的帮助,有没有办法将字符串值转换为行? 但是,存在一个困难,该字段具有未知数量的定界元素。 有问题的数据库引擎是MySQL。 例如: 问题答案: 它可能没有我最初想象的那么困难。 这是一种通用方法: 计算分隔符的出现次数 循环多次,每次获取一个新的定界值并将该值插入第二个表中。

  • 问题内容: 我有以下内容,行索引在哪里。如何将列中的字符串分成5列数字? 问题答案: 对于另一种情况,假设它是看起来像元组的字符串: (注意:对于较早版本的熊猫(<0.16.1),您需要使用而不是expand关键字) 顺便说一句,如果它是元组而不是字符串,则可以简单地执行以下操作:

  • 为什么下面的bash代码不起作用? 预期产出: