PostgreSQL中JSONB列随机文本

3
以下是我正在使用的查询语句,用于清洗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(...),但是出现了错误 "DETAIL: Token "md5" is invalid."。我还尝试使用 || 进行连接,但也没有成功。

2个回答

5
您可以使用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';

看起来 dataJSONB 数据类型。如果是这样的话,在它上面使用 to_jsonb() 是没有必要的;|| 就足够了。

1
你应该将字符串与随机函数连接起来,然后将其转换为jsonb类型。
select ('{"firstName":"' ||  md5(random()::text) || '", "lastName":"' || md5(random()::text) ||'"}')::jsonb

上述代码将创建一个jsonb对象,其中包含随机的名字和姓氏。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接