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 但这也不起作用。
您可以使用 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();||足够了。