正如标题所示,我很难过,猜测如何有效地更新多行中的值。该列使用数据类型ltree
实现。因此,在postgresql
中,应该为此数据类型提供某种形式的特殊操作。这是一个示例:
表格的名称,例如:product_sections
,包含这些值的列的名称为section_path (type: ltree)
Android
Android.Browser
Android.Browser.Test
Android.Browser.Compare.URL
在这里,我想仅将Browser
更新为类似Foo
部分的内容,这样数据就会变成这样:
Android
Android.Foo
Android.Foo.Test
Android.Foo.Compare.URL
提前致谢:)
答案 0 :(得分:2)
update product_sections
set product_path = 'Android.foo'::lpath|| subpath(product_sections,2))
where product_path <@ 'Android.browser'::lpath
未经测试,但这应该可以达到正确的结果。
答案 1 :(得分:0)
对于动态结果,您可以使用nlevel函数作为子路径参数(未经测试):
Microsoft.BizTalk.Bam.EventObservation.OrchestrationEventStream.BeginActivity("someactivity", someID);
Microsoft.BizTalk.Bam.EventObservation.OrchestrationEventStream.UpdateActivity("someactivity", someID, "someProperty", someNamespace);
Microsoft.BizTalk.Bam.EventObservation.OrchestrationEventStream.EndActivity("someactivity", someID);
答案 2 :(得分:0)
我的项目中有同样的需求。先前的答案对我不起作用,所以我将发布解决方案。
我在两个请求中找到了一种方法:第一个请求将void UdpExample::HandleUdpReceive(otMessage *aMessage, const otMessageInfo *aMessageInfo)
的ltree路径修改为renderer.vr.isPresenting()
,第二个请求为{{1 }}。
这里是:
Android.Browser
答案 3 :(得分:0)
上述错误在于使用将文本传输到ltree的函数不正确。我们应该使用text2ltree(),sql是
update tree_test
set path = text2ltree('Android.foo') || subpath(path,2))
where product_path <@ 'Android.browser';
答案 4 :(得分:0)
我知道我参加这个聚会有点晚了。经过研究,我发现确实没有很好的方法和简单的方法来执行此操作。 I created the following user defined function that will get the job done
SELECT '44.22.23'::TEXT::LTREE AS orginal
, ltree_swap('44.22.23'::TEXT::LTREE,'23'::TEXT::LTREE,'fish'::TEXT::LTREE,2) AS swap
--=========RESULT SET=========--
-- orginal swap
-- 44.22.23 44.22.fish