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

从数组创建字符串

乐正远航
2023-03-14
问题内容

我在PostgreSQL中有一个表,其中包含:

id   name   arrayofparents
1     First
2     Second      {1}
3     Second_Sec  {1,2}
4     Third       {1,2,3}
5     Second_A    {1}
6     Other
7     Trash       {6}

arrayofparents是类型,integer[]它包含具有正确顺序的该行的父记录列表。

id=4家长:First然后SecondSecond_sec

如何编写一个查询,该查询对于任何给定的ID都会生成其父母姓名的字符串?

例如:

id=3First->Second

id=4First->Second->Second_sec

id=7Other

编辑: 如果可能的话,我希望请求的IDname总是会出现。 id=3First->Second->Second_sec

id=4First->Second->Second_sec->Third

id=7Other->Trash

id=6Other


问题答案:

您可以结合使用诸如generate_subscripts和array之类的多项操作来获得结果:

with mtab as (
      SELECT id, name, array_append(arrayofparents,id) as arrayofparents,
      generate_subscripts(array_append(arrayofparents, id), 1) AS p_id FROM tab where id=2
)
select distinct array_to_string(
  array(
    select tab.name from tab join mtab t on tab.id=t.arrayofparents[t.p_id]
  ), '->'
) ;

实时示例Sqlfiddle

或将外部联接与以下任何一项结合使用:

SELECT coalesce(string_agg(p.name, '->') || '->' || t.name, t.name) AS parentnames
FROM tab AS t
  LEFT JOIN tab AS p ON p.id = ANY(t.arrayofparents)
 where t.id =7 
GROUP BY t.id, t.name

实时示例Sqlfiddle



 类似资料:
  • 在这个问题之前,我先要说明一个事实,那就是我学习编程才一个月,而这个学校的作业却把我难住了。具体地说,它是摩尔斯电码到英语翻译器(反之亦然)...这是我被困住的部分:

  • 问题内容: 我想在Java中显示Unicode字符。如果我这样做,则效果很好: 符号等于“∂”。这是我想要的。 问题是我知道Unicode号,因此需要从中创建Unicode符号。我(对我)尝试了显而易见的事情: 但是,在这种情况下,符号等于“ \ u2202”。那不是我想要的 如果我知道符号的Unicode编号(但只能在运行时-我不能像第一个示例那样对其进行硬编码),如何构造该符号? 问题答案:

  • 问题内容: 我有一个像这样的文本文件: 我想要一个像这样的字符串数组: 我试过了 : 任何人都可以帮助我…。所有答案将不胜感激… 问题答案: 根据您的输入,您就快到了。您错过了循环中保持从文件读取每一行的关键点。由于您不事先知道文件中的总行数,因此请使用集合(动态分配的大小)来获取所有内容,然后将其转换为的数组(这是您想要的输出)。 像这样: 那么输出()将是: 这不是最佳解决方案。其他更 聪明的

  • 问题内容: 我如何提取字符串[]或arraylist中的所有元素,并以适当的格式(所有空格之间使用单个空格)组合所有单词并存储在数组中。 输出:Java很酷。 问题答案: 使用。 或使用Apache Commons Lang 。 或使用Java8的。

  • 本文向大家介绍C语言创建字符串数组,包括了C语言创建字符串数组的使用技巧和注意事项,需要的朋友参考一下 例子 字符串数组可能意味着两件事: 元素为char *s的数组 其元素的数组的数组char小号 我们可以像这样创建一个字符指针数组: 请记住:当我们将字符串文字分配给时char *,字符串本身将分配在只读内存中。但是,该数组string_array分配在读/写内存中。这意味着我们可以修改数组中的

  • 问题 你想由数组创建一个字符串。 解决方案 使用 JavaScript 的数组方法 toString(): ["one", "two", "three"].toString() # => 'one,two,three' 讨论 toString() 是一个标准的 JavaScript 方法。不要忘记圆括号。