postgres jsonb 列中的随机文本

ed1*_*d1t 3 sql random postgresql json sql-update

以下是我用来清理 JSONB 列中的一些字段的查询。我正在尝试对名字和姓氏进行随机化,因此想使用 md5(random()::text) 之类的内容作为值。

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

我尝试用 md5(...) 替换“random_text”,但收到错误“详细信息:令牌“md5”无效。”。我也尝试过使用|| concat 但这也不起作用。

GMB*_*GMB 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';
Run Code Online (Sandbox Code Playgroud)

看起来像是datadatatype JSONB。如果是,则无需使用to_jsonb()||足够了。