oceanbase select as union all 问题

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】oceanbase 4.2.1.6
【问题描述】后台代码执行insert into values (select a as 别名 from dual union all select b as 别名 from dual ) 发现别名貌似被过滤掉了

1 个赞

问题详细描述下把,别名被过滤掉了是什么意思

1 个赞

我们在后台写了sql 如下 :
insert into t_wf_runtime_work (WF_WORK_ID, WORK_NAME) select a.* from ( select ‘11efa2623f963cedbb82c197b459f7bc’ as a , null as b from dual union all select ‘11efa2626176e03ebb821d0b9f61ceac’ as a, ‘115623565’ as b from dual ) a

通过jdbc驱动连接数据库执行sql后发现t_wf_runtime_work表里面的WORK_NAME字段都是null

感觉像是as后的别名在执行sql的时候失效了

1 个赞

WORK_NAME这个字段的类型是什么呢
分两步试试,只执行select看下出来的结果是什么样的

1 个赞

只执行 select 不带别名的话 ,只要有一个字段为空union all其余查询字段即使有值也会为空 ; 所以想问下这个别名失效是ob的问题么?


1 个赞

但是内层如果有as 别名 , 直接在ob执行的话也是没有问题的 ,现在是想问下 , ob执行sql前有没有什么机制会是把子查询中union all 表的字段 as别名过滤掉了

1 个赞


我再v4.3.1.0测试没有问题,也没找到你这个版本的bug,你去命令行执行,然后show Warning看看有没有信息

1 个赞

您第一个sql加了别名 , 您如果不加别名的话 ,外层在嵌套一个select () 会有问题的 ;

其实我的诉求还是 为什么后台拼接了as 别名 , 但是到oceanbase数据库 as 别名貌似失效了 ; 是 druid组装sql的问题呢

正常有别名确实不会有问题的

1 个赞


怎么样不带别名都没问题

我感觉你可以换个驱动试试,你也去客户端看下数据库的表现

1 个赞

老师 您驱动用的版本方便告知下么?

1 个赞

OceanBase 官方网站的 资源 → 下载中心 → 企业版 → 驱动和中间件 下的 OceanBase JDBC 驱动程序 中单击对应的版本
从这里下载试下

1 个赞

你好,更换驱动后问题还存在么

你好 今天我在环境验证下 , 验证后回复您