关于Oceanbase不支持数组变量 写入指定范围数组的随机写入

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】4.2.1
【问题描述】

openGauss下生成的数据如下
select g,
(random()*1000000)::int,
(random()*10000)::int,
(random()*10)::int,
(random()*100)::decimal(10,2),
(random()*10000000)::decimal(10,2),
(random()*1)::decimal(10,2),
(random()*1)::decimal(10,2),
(array[‘A’, ‘F’])[floor(random() * 2 )+1],
(array[‘A’, ‘F’])[floor(random() * 2 )+1],
date’1994-01-15’ + floor((random() * 7))::int rand_date,
date’1994-09-25’ + floor((random() * 7))::int rand_date,
current_date + floor((random() * 15))::int rand_date,
substr(md5(random()::text), 0, 10),
substr(md5(random()::text), 0, 10),
substr(md5(random()::text), 0, 10)
FROM generate_series(1, 100000000) as g;

其中数组变量 (array[‘A’, ‘F’])[floor(random() * 2 )+1], 在OceanBase如何实现指定列表范围的随机生成

我试过 set @变量=数据值 ,然后@变量[0],@变量[1] ,发现不支持,
也试过了json的表达,同样无力,我有什么样的方式实现。

【SOP系列 22 】——故障诊断第一步(系统巡检和诊断信息收集)

(array[‘A’, ‘F’])[floor(random() * 2 )+1], 是从数组中取一个的含义吗?

是的,假设数据组有7个,就从7个随机取,假设是10个,那就是10个随机取

我已经解决 通过 case when by 的方式

select
CASE
WHEN concat(“test”,floor((RAND())*3)) =‘test0’ THEN ‘apple’
WHEN concat(“test”,floor((RAND())*3)) =‘test1’ THEN ‘pear’
WHEN concat(“test”,floor((RAND())*3)) =‘test2’ THEN ‘milk’
ELSE ‘banana’
END AS lenarray
from table(generator(10)) ;

:+1: :+1:
前面问了我们这边产品,他们没有给出解决办法