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

测试JOOQ postgres jsonb列是否存在键

司寇星海
2023-03-14
select tags->>'group' as group, sum(n) as sum
from TABLE
where tags ? 'group'
group by tags->>'group';
val selectGroup = DSL.field("{0}->>'{1}'", String::class.java, TABLE.TAGS, "group")
dsl().select(selectGroup, DSL.sum(TABLE.N))
  .from(TABLE)
  .where(TABLE.TAGS.contains('group'))
  .groupBy(selectGroup)

这相当于在Postgres中测试包含条件@>。但是我需要做exists条件。我如何在Jooq中表达这一点?

共有1个答案

钦永贞
2023-03-14

这里有两点值得一提:

不幸的是,没有很好的解决方案,因为目前被严格限制为在PostgreSQL JDBC驱动程序中用作绑定变量占位符。因此,即使您能够找到通过jOOQ将该字符发送到服务器的方法,JDBC驱动程序仍然会曲解它。

在此堆栈溢出问题中记录了一个解决方案。

DSL.field("{0}->>'{1}'", String::class.java, TABLE.TAGS, "group")
DSL.field("{0}->>{1}", String::class.java, TABLE.TAGS, DSL.inline("group"))
 类似资料:
  • 我已经将Selenium WebDriver添加到Powershell并创建WebDriver实例: 现在我要找到输入字段: 我发现了几个如何在C#中“测试元素是否存在”的例子: Selenium WebDriver-测试元素是否存在

  • 问题 你想测试一个文件或目录是否存在。 解决方案 使用 os.path 模块来测试一个文件或目录是否存在。比如: >>> import os >>> os.path.exists('/etc/passwd') True >>> os.path.exists('/tmp/spam') False >>> 你还能进一步测试这个文件时什么类型的。 在下面这些测试中,如果测试的文件不存在的时候,结果都会返

  • 问题内容: 我想先测试Firebase中是否存在数据,然后再添加它。但是我的方法有问题:我尝试使用此Javascript代码列出所有数据: 但是,如果该用户不存在,则会在之前添加该用户,然后我的代码会说该用户存在。您会说这是正常的,因为仅在“ child_added”时才调用我的警报,但是我不知道该怎么做。 我也尝试使用“值”事件,但我的“ message.name”为空。 我该如何解决? 问题答

  • 问题内容: 我正在做一个拼字游戏程序 在下面的示例中,我下面的代码使用SQLite作为简单数据库来存储我的单词。 但是,它告诉我无法重新创建数据库表。 如何检查是否已经存在一个名为的表,然后跳过尝试创建表的操作? 错误: 编码: 问题答案: 您要查找的查询是: 因此,代码应如下所示: SQLite 3.3+的一个方便的替代方法是使用更智能的查询来创建表: 从文档中: 试图在已经包含相同名称的表,索

  • 我想使用regex来查看是否存在某个集合以外的任何字符。 “pvc”返回False 'pd'返回True 'p('返回True 我如何用RE来表达这个?谢了。

  • 问题内容: 有没有一种方法可以测试元素是否存在?任何findElement方法都将以异常结尾,但这不是我想要的,因为它可能是一个元素不存在并且没关系,这不是测试失败,因此异常不能成为解决方案。 我发现了这篇文章:Seleniumc#Webdriver:等待元素出现,但这是针对C#的,我不是很擅长。谁能将代码翻译成Java?抱歉,我在Eclipse中进行了尝试,但我没有将其正确地插入Java代码中。