【问题标题】:postgres random text in jsonb columnjsonb列中的postgres随机文本
【发布时间】:2020-12-29 16:34:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql json postgresql random sql-update


    【解决方案1】:

    您可以使用 json builder 函数来生成 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()了;你可以直接使用||

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多