postgres jsonb列中的随机文本

wpx232ag  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(122)

下面是我用来擦除JSONB列中一些字段的查询,我尝试将名字和姓氏随机化,所以希望使用类似md5(random()::text)的内容作为值。

update people set
data = to_jsonb(data) || '{"firstName": "random_text", "lastName": "random_text"}'
where id = 'b3c09005-7afb-4ad6-922d-76078875e59e';

我尝试将“random_text”替换为md5(...),但收到错误“详细信息:标记“md5”无效。"。我还尝试使用||但那也没用。

2ul0zpep

2ul0zpep1#

您可以使用json生成器函数来生成json对象:

update people set
data = data || jsonb_build_object(
    'firstName', md5(random()::text), 
    'lastName',  md5(random()::text)
)
where id = 'b3c09005-7afb-4ad6-922d-76078875e59e';

看起来data的数据类型是JSONB,如果是这样,就不需要在上面使用to_jsonb();||是足够的。

dfuffjeb

dfuffjeb2#

应该将字符串与随机函数连接起来,然后将其强制转换为jsonb-

select ('{"firstName":"' ||  md5(random()::text) || '", "lastName":"' || md5(random()::text) ||'"}')::jsonb

上面将创建一个名和姓随机的jsonb对象。

相关问题