美文网首页
postgresql之字符串类型/日期转化为jsonb类型

postgresql之字符串类型/日期转化为jsonb类型

作者: hellodyp | 来源:发表于2019-08-21 17:06 被阅读0次

原生sql使用 variable::type 这种方式很容易实现类型转化

但是转化为jsonb的时候,字符串类型转化为jsonb使用此种方式会报错

SELECT 'hello world'::jsonb

###  ERROR:  invalid input syntax for type json

# 以下才是正确姿势
SELECT '"hello world"'::jsonb

即 如果行把字符串类型转化为jsonb 需要在字符串外层包上双引号("")

那么查询到的变量如何使用双引号呢?

答案是使用format方法,没错这个方法就类似与很多编程语言里面字符串格式化方法, 第一个参数是待格式化的字符串,第二个参数是要格式的字符串

应用场景:
笔者业务中某张表存了日期字段,想把该日期字段存到表内某jsonb字段下

update orders 
set extend = jsonb_set(extend, '{edd_raw}', 
                     format('"%s"', to_char(edd, 'YYYY-MM-DD HH24:MI:SS'))::jsonb, 
                     true)
where extend->>'edd_raw' is null

本条sql还使用了jsonb_set函数, 用来更新某个jsonb字段中的某个key

化用到这条sql上, extend是jsonb字段, 该字段下有一个key:valueedd_raw: data
jsonb_set的第三个参数是布尔值,含义是如果该字段内没有key, 则新增此key并插入要更新的值
注意->>这个操作符可以取出jsonb字段的指定key对应的value 当作正常字段那样使用

相关文章

  • postgresql之字符串类型/日期转化为jsonb类型

    原生sql使用 variable::type 这种方式很容易实现类型转化 但是转化为jsonb的时候,字符...

  • java数据转化问题

    格式为yyyy-MM-DD的字符串类型的日期转化为Timestamp类型 注:1.String转Timestamp...

  • PostgreSQL数据类型

    PostgreSQL中主要有三种类型的数据类型: 数值数据类型 字符串数据类型 日期/时间数据类型 数值数据类型 ...

  • PostgreSQL学习笔记(四)数据类型(二)

    字符串类型PostgreSQL中字符串类型指 char、varchar和text。 在PostgreSQL中,这三...

  • postgresql

    postgresql语法 一、数据类型 数值类型:interger 存储整数字符串类型 char(size)ch...

  • js 日期操作

    sjs字符串转化时间戳可以使用自带函数 Date(要转化的时间字符串)先转化为Date类型,之后再将Date类型转...

  • 999 - Elasticsearch Query DSL 03

    Match Query 字符串类型 数字类型 日期类型:虽然像字符串,但其实是日期,可以用GET /example...

  • SQL

    PostgreSQL 更新JSON,JSONB字段update 表名 set 列名 = (jsonb_set(列名...

  • iOS 复杂构造类型与字符串互相转换

    复杂构造类型转字符串方法: 字符串转复杂构造类型方法:

  • jJavaScript运算......

    1.隐式转换结论 (1)数字+字符串:将数字转化为字符串 (2)数字+Boolean(布尔类型):Boolean转...

网友评论

      本文标题:postgresql之字符串类型/日期转化为jsonb类型

      本文链接:https://www.haomeiwen.com/subject/oujisctx.html