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

如何在Jooq中表示串联运算符()?

颛孙博易
2023-03-14

我正试图将这个查询转换为jOOQ,但遇到了用于将值连接到数组的“”。

sql prettyprint-override">with recursive nodes(node_key, parent_ids, parent_path) as (
    select node_key, array[node_key] as parent_ids, array[name::text] as parent_path
    from node
    where parent_node_key is null
    
    union all
    select c.node_key, parent_ids || c.node_key, parent_path || c.name::text
    from node c
    join nodes n on n.node_key = c.parent_node_key
)
select * from nodes order by parent_path;
dsl.withRecursive( name( "nodes" )
                       .fields( "node_key",
                                "parent_ids",
                                "parent_path" ).as(
        select(
            NODE.NODE_KEY,
            array( NODE.NODE_KEY).as( "parent_ids" ),
            array( NODE.NAME).as( "parent_path" )
        )
            .from( NODE)
            .where( NODE.PARENT_NODE_KEY.isNull() )
            .unionAll(
                select( NODE.NODE_KEY,
                        field( "parent_ids" ))
            ) )
) );

如何将值连接到数组?

共有1个答案

王航
2023-03-14

使用arrayCat函数而不是运算符。

https://www.jooq.org/javadoc/latest/org.jooq/org/jooq/util/postgres/postgressl.html#arraycat(t%5b%5d,org.jooq.field)

 类似资料:
  • 问题内容: 我不知道MySQL的串联运算符。 我已尝试将此代码进行串联: 但这没有用。我应该使用哪个运算符来连接字符串? 问题答案: 您正在使用ORACLE类型的串联。MySQL的应该是 调用该函数,并用逗号分隔您的值。

  • 我的问题是, 如何正确创建select语句? 如何最好地添加空格分隔符? 是否有更好的替代JOOQ(when=case)条件子句?

  • 问题内容: 对于字符串连接,我们可以使用or或concat运算符。 我尝试了以下性能测试,发现更快,更有效地进行字符串连接。 字符串连接比较100,000次 : 结果 如果比运算符快,那么什么时候应该使用串联运算符? 问题答案: concat方法始终会生成一个带有串联结果的新String。 plus运算符由StringBuilder创建来支持,它会附加所需的所有String值,并进一步对toStr

  • 问题内容: 假设字符串a和b: 在幕后,他们是同一回事吗? 这里将concat反编译为参考。我也希望能够反编译该+运算符,以查看其作用。 问题答案: 不,不是。 首先,语义上略有不同。如果a是null,则抛出一个,但a+=b将把原来的值a就好像它是null。此外,该方法仅接受值,而+操作员会将参数无提示地转换为String(使用对象的方法)。因此,该concat()方法在接受方面更加严格。 要深入

  • 本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果