postgres之jsonb屬性的簡單操作

2021-08-22 08:19:18 字數 2662 閱讀 7640

更新操作(attributes屬性為jsonb型別)

方法定義:

jsonb_set(target jsonb, path text, new_value jsonb[, create_missing boolean])

引數:target:目標(jsonb型別的屬性)

path :路徑,如果jsonb是陣列『』表示在下標是0的位置更新a屬性,如果不是陣列,是物件,則寫『』即可

new_value:新值

選填引數:create_missing:jsonb欄位不存在f1屬性時建立,預設為true

返回:更新後的jsonb

官方文件給出的示例(jsonb陣列):

jsonb_set('[,2,null,3]', '','[2,3,4]', false)

結果:[,2,null,3]

jsonb_set('[,2]', '','[2,3,4]')

結果:[, 2]

更新jsonb屬性:

-- attributes為jsonb型別字段(物件轉成的json)

原值:update user_test set attributes = jsonb_set(attributes,'',

'"0"'::jsonb,

false

)where id =

'8888'

;執行後:

為jsonb插入屬性:

-- 執行後attributes欄位中新增了platform:baidu

update user_test set attributes = attributes::jsonb ||

''::jsonb;

或者:update user_test set attributes = jsonb_set(attributes,'',

);

查詢

select value from json_each('') where key = 'a'

select * from json_object_keys('')

select * from json_object_keys('}')

select * from json_object_keys(from ci_type.attributes);--錯誤

select * from to_jsonb('"a":1,"b":2')

select ''::json->>'b' --獲取jsonb中對應鍵的值(文字)

--select * from json_each( to_jsonb(select distinct attributes from ci_type ) )

--select to_jsonb(select distinct attributes from ci_type )

--擴充套件字段提取相應屬性的值

select attributes :: json->>'instancetype' from ci_type

-- 屬性值轉為jsonb

select to_jsonb('id:'||id::text) from ci

--jsonb新增屬性,刪除屬性

select ''::jsonb || ''::jsonb--新增

select ''::jsonb -'c'-'d'-'a'||''--刪除

select ''::jsonb - 'a'

-- 根據路徑獲取json物件:#>

select ',"c":3}'::json #> ''

結果:"b1"

select ',"c":3}'::json #> ''

結果:-- 根據路徑獲取json物件為text:#>>

select ',"c":3}'::json #>> ''

結果:"b1"

to_jsonb()方法接受乙個引數,將引數轉換為jsonb

jsonb儲存毫秒值欄位

# 更新user表中attributes欄位中的create_time欄位為當前時間

update user_test

set attributes = jsonb_set(attributes,

'',to_jsonb(extract(epoch from

now())

*1000),

true

)

extract(epoch from now())*1000 獲取毫秒值

extract(field from source)

field 表示取的時間物件,source 表示取的日期**,型別為 timestamp、time 或 interval。

example:select extract(year from now());

extract(epoch from now())檢視現在距1970-01-01 00:00:00 utc 的秒數

epoch:新紀元時間 epoch 是以 1970-01-01 00:00:00 utc 為標準的時間,將目標時間與 1970-01-01 00:00:00時間的差值以秒來計算 ,單位是秒,可以是負值;

PageHelper之PageInfo屬性解釋

最近在使用pagehelper進行分頁操作,但是我對pageinfo的屬性不是很熟悉,因此這裡記錄一下pageinfo的屬性意思。private listlist 物件記錄結果集 private int total 0 總記錄數 private int pagesize 20 每頁顯示記錄數 pri...

Spring Framework之自定義屬性編輯器

屬性轉換測試 簡單點,就是在屬性注入的時候,能夠將配置的string型別轉為bean屬性真正的型別。例如在spring的xml配置檔案中配置 這裡配置的configlocation看起來是個位址,是字串型別,但是在sqlsessionfactorybean中是resource型別 private r...

swift之給拓展Category增加屬性

使用 category 擴充套件現有的類的功能的時候,直接新增例項變數這種行為是不被允許的,這時候一般就使用 property 配合 associated object 的方式,將乙個物件 關聯 到已有的要擴充套件的物件上。進行關聯後,在對這個目標物件訪問的時候,從外界看來,就似乎是直接在通過屬性訪...