You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

H2数据库TEXT ARRAY字段使用LIKE通配符查询方法

在H2数据库中查询TEXT ARRAY字段是否存在匹配LIKE的元素

由于H2的已知问题,直接在EXISTS子查询中使用UNNEST引用外层表的数组字段会触发报错,以下两种方案可实现需求:

方案一:CROSS JOIN UNNEST + DISTINCT

通过交叉连接展开数组,筛选匹配元素后去重,保证每行仅返回一次:

SELECT DISTINCT w.*
FROM app.worklist w
CROSS JOIN UNNEST(w.profession) AS p
WHERE p LIKE 'A%';

方案二:遍历数组索引(无重复行)

利用H2内置的SYSTEM_RANGE生成数组的索引范围,结合ARRAY_GET逐个检查元素,无需去重:

SELECT *
FROM app.worklist w
WHERE EXISTS (
    SELECT 1
    FROM SYSTEM_RANGE(1, ARRAY_LENGTH(w.profession)) AS idx
    WHERE ARRAY_GET(w.profession, idx.value) LIKE 'A%'
);

方案对比

  • 方案一代码简洁直观,但数组中多个元素匹配时会返回重复行,需依赖DISTINCT去重;
  • 方案二避免了重复结果,性能更优,适合数组元素较多或对结果唯一性要求高的场景。

内容的提问来源于stack exchange,提问作者patstuart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:02:15