亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

POSTGRESQL 新型字段類型怎么用

發布時間:2021-11-26 09:44:32 來源:億速云 閱讀:197 作者:小新 欄目:大數據

這篇文章給大家分享的是有關POSTGRESQL 新型字段類型怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

POSTGRESQL 在同種類型的數據庫中,字段類型算是最豐富的,其中POSTGRESQL 里面有一種字段類型叫 RANGE,范圍類型。這樣的類型不曾在傳統三大數據庫中覓得蹤影。

下面就說說,這樣的新字段類型解決了什么問題?

金融中,都有類似合同之類的東西,合同一般都有起始日期和結束日期,一般就算提前還款的情況下,雖然可以提前結清,但原有的合同的初始設定的日期還是不能被隨意修改的。

如果我們在傳統數據庫中,怎么操作,我們可能會建立兩個字段,舉例我們一個叫 START_TIME  另一個叫 END_TIME 來記錄起始和結束的日期。

在數據庫中這樣解決邏輯問題,看似習以為常,但是其實深層次的去挖掘,這其實是在數據庫中將一個整體進行了拆分。

那我們在POSTGRESQL 中怎么做呢?

下面不過多講理論,直接切入主題

POSTGRESQL 新型字段類型怎么用

我們建立一個表,里面有一個類似其他數據庫一樣的自增列,并且有一個contract_no 合同號,還有一個不曾見面的  tsrange 類型。

這就是我們今天要提到的,時間范圍類型。以下是所有測試數據

POSTGRESQL 新型字段類型怎么用

首先我們插入兩條數據,在里面我們使用 tsrange的類型函數,

POSTGRESQL 新型字段類型怎么用

很明顯,這是一個字段包含了兩個時間的字段

POSTGRESQL 新型字段類型怎么用

那這有什么作用,例如我們要統計 我們現在的合同初始日期在 2019-01-01 以后生效的合同。

select * from contract where contract_start_end_time > tsrange('2019-01-01','2020-01-01');

POSTGRESQL 新型字段類型怎么用

很容易就能查出相關信息,當然這并不能體現這樣的字段類型的優點

POSTGRESQL 新型字段類型怎么用

那我們繼續

下面我想查一下,合同在 2019-01-30 日開始 到 2020-12-20 日結束的合同

select * from contract where contract_start_end_time > tsrange('2019-01-30','2020-12-20');

POSTGRESQL 新型字段類型怎么用

很明顯,一下子就查出來了。

我們在創建針對這樣的字段的索引

POSTGRESQL 新型字段類型怎么用

細心的人可能看見,這索引看起來很奇怪,當然這里面也有乾坤,也是其他三大數據庫不具備的能力,此處略過。

我們在來難一點的查詢,我們查一下包含,這也是傳統在設計這方面需要用到的,我們需要查詢 合同在 2019-02-01 ,并且 結束在 2021-02-03 和所有合同號

POSTGRESQL 新型字段類型怎么用

看這也是手拿把攥的。

可能還有人問,要是我查詢不包含呢,哪怕初始日期,或者結束日期其中一個不再內也要查出來,當然這對 POSTGRESQL 也不是問題

select * from contract where contract_start_end_time <@ tsrange('2013-02-01','2021-02-03');

POSTGRESQL 新型字段類型怎么用

其實POSTGRESQL 類似這樣的功能還有很多,同時對于這樣的范圍字段還有一個注意的事情,就是 我們在查詢的時候 喜歡用 >=  =< 但對這樣的字段要小心,你要決定是 集合中的 () 【】, {】 【) 的那種。

看不懂的同學,請補習一下 集合的概念

POSTGRESQL 新型字段類型怎么用

postgresqlpostgres@[local]=#5432=;insert into contract (contract_no,contract_start_end_time) values ('20190130VB',tsrange('2019-01-2','2021-02-2','[]'));

INSERT 0 1

postgresqlpostgres@[local]=#5432=;insert into contract (contract_no,contract_start_end_time) values ('20190130VB',tsrange('2019-01-2','2021-02-2','()'));

INSERT 0 1

postgresqlpostgres@[local]=#5432=;insert into contract (contract_no,contract_start_end_time) values ('20190130VB',tsrange('2019-01-2','2021-02-2','[)'));

INSERT 0 1

postgresqlpostgres@[local]=#5432=;insert into contract (contract_no,contract_start_end_time) values ('20190130VB',tsrange('2019-01-2','2021-02-2','(]'));

上面的雖然數據一致,但如果不注意設置的集合性質,那是要出問題的,大家可以從下面的兩個圖中看結果,只是一個 >=  和 > 的區別,給出的結果集是不一樣的,所以處理這樣的查詢要小心

POSTGRESQL 新型字段類型怎么用

POSTGRESQL 新型字段類型怎么用

最后有同學問,如果我不在后面添加集合的符合,那我默認輸入的是什么樣的格式

()

對,就是這樣的集合格式。

有時候從字段的類型設計,可以看出POSTGRESQL 為什么在關系型數據庫后面還要添加一個 OBJECT 數據庫。

感謝各位的閱讀!關于“POSTGRESQL 新型字段類型怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵阳市| 玉门市| 天等县| 盈江县| 新宁县| 寻甸| 大英县| 彰武县| 宣武区| 嵩明县| 淮安市| 华池县| 绥棱县| 松滋市| 阿拉尔市| 苏州市| 来凤县| 邛崃市| 资中县| 陆川县| 泸州市| 武定县| 蓬安县| 屏山县| 双牌县| 乐安县| 阜阳市| 保定市| 霍林郭勒市| 同心县| 犍为县| 平和县| 琼结县| 定远县| 白河县| 上犹县| 安多县| 兴宁市| 屯留县| 高唐县| 聂拉木县|