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

PostgreSQL中RegExp类型无法序列化导致SQL查询失败求助

解决RegExp类型无法序列化的SQL查询问题

原始SQL语句

select
    SUM(t138_0."mocallminutes") f_0
from
    table1
where
    regexp_like(t138_0."cosid",
    (select
     extra1
from
    table2
where
    pkid = 1
));

错误信息

org.jkiss.dbeaver.model.exec.DBCException: SQL错误 [65536]: 查询失败 (#20230324_051519_01491_fsvh6): RegExp类型无法序列化
at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCResultSetImpl.nextRow(JDBCResultSetImpl.java:183)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.fetchQueryData(SQLQueryJob.java:827)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:632)

问题原因

子查询返回的extra1字段值被识别为RegExp对象而非字符串,导致数据库驱动尝试序列化该对象时失败。

解决办法

  • 强制将子查询返回的正则表达式转为字符串类型,修改后的SQL如下:
select
    SUM(t138_0."mocallminutes") f_0
from
    table1
where
    regexp_like(t138_0."cosid",
    (select
     CAST(extra1 AS VARCHAR)
from
    table2
where
    pkid = 1
));
  • 若上述方法无效,可先手动查询出table2中pkid=1对应的extra1值,将其作为字符串直接写入regexp_like的第二个参数中。
  • 检查table2的extra1字段类型,若存储的是RegExp对象而非字符串,建议修改字段类型为字符串类型,从根源避免类型转换问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:52:11