我在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
然后Second
再 Second_sec
如何编写一个查询,该查询对于任何给定的ID都会生成其父母姓名的字符串?
例如:
id=3
:First->Second
。
id=4
:First->Second->Second_sec
。
id=7
:Other
。
编辑: 如果可能的话,我希望请求的IDname
总是会出现。 id=3
:First->Second->Second_sec
。
id=4
:First->Second->Second_sec->Third
。
id=7
:Other->Trash
。
id=6
:Other
。
您可以结合使用诸如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分配在读/写内存中。这意味着我们可以修改数组中的