好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 介紹PostgreSQL中的范圍類型特性

介紹PostgreSQL中的范圍類型特性

熱門標簽:怎么去開發一個電銷機器人 簡單的智能語音電銷機器人 湖南保險智能外呼系統產品介紹 泗洪正規電話機器人找哪家 南昌呼叫中心外呼系統哪家好 ai電話電話機器人 怎么申請400熱線電話 河北便宜電銷機器人軟件 小程序智能電話機器人

 PostgreSQL 9.2 的一項新特性就是范圍類型 range types,通過這個名字你可以輕松猜出該類型的用途,它可讓你為某列數據定義數值范圍。

這個簡單的特性可以讓我們不需要定義兩個字段來描述數值的開始值和結束值,一個最直觀的例子就是:
 

postgres# CREATE TABLE salary_grid (id int, position_name text, start_salary int, end_salary int);
CREATE TABLE
postgres# INSERT INTO salary_grid VALUES (1, 'junior developper', 20000, 30000);
INSERT 0 1
postgres# INSERT INTO salary_grid VALUES (2, 'senior developper', 28000, 35000);
INSERT 0 1
postgres# INSERT INTO salary_grid VALUES (3, 'postgres developper', 50000, 70000);
INSERT 0 1

這個簡單的關系用于存儲一個給定的職位和待遇的范圍(你還需要確定工資的貨幣單位),重要的是你必須實現一些系統函數或者外部程序 API 來執行例如范圍的交叉或者聯合。


Postgres 9.2 允許你的應用直接在數據庫端實現范圍值,范圍類型包括:

  •     4 位整數范圍, int4range
  •     8 位整數范圍, int8range
  •     數值范圍, numrange
  •     無時區的時間戳范圍, tsrange
  •     帶時間戳的時間范圍, tstzrange
  •     日期范圍, daterange

你也可以定義自己的范圍類型,Postgre 官網文檔給出了 float 的示例:
 

postgres# CREATE TYPE floatrange AS RANGE (
postgres# subtype = float8,
postgres# subtype_diff = float8mi);

有了這樣一個功能,我們前面提到的工資表格例子就可以改為:
 

postgres=# create table salary_grid (id int, position_name text, salary_range int4range);
CREATE TABLE
postgres=# INSERT INTO salary_grid VALUES (1, 'junior developper', '[20000, 30000]');
INSERT 0 1
postgres=# INSERT INTO salary_grid VALUES (2, 'senior developper', '[28000, 35000]');
INSERT 0 1
postgres=# INSERT INTO salary_grid VALUES (3, 'postgres developper', '[50000, 70000]');
INSERT 0 1
postgres=# select * from salary_grid;
id | position_name | salary_range
----+---------------------+---------------
1 | junior developper | [20000,30001)
2 | senior developper | [28000,35001)
3 | postgres developper | [50000,70001)
(3 rows)

很重要的一點是,如果使用的是括號(),元組數據的上界是排除在外的,而中括號[]則上界包含其中。

數據庫本身也包含不同的用于處理范圍類型的函數。

你可直接獲取一個給定范圍的最低和最高值:
 

postgres=# SELECT upper(salary_range), lower(salary_range) FROM salary_grid;
upper | lower
-------+-------
30001 | 20000
35001 | 28000
70001 | 50000
(3 rows)

你可以檢查某個值是否包含在給定范圍內:
 

postgres=# SELECT salary_range @> 4000 as check
postgres=# FROM salary_grid
postgres=# WHERE position_name = 'junior developper';
check
-------
f
(1 row)

這里顯示 4000 并不包含在初級職位的待遇里 [20000,30000].


這里稍微復雜了一些,你還可以檢查兩個范圍之間的重疊的部分,這里的 salary_range 使用的是 int4,因此 int4range 函數可用于此操作:
 

postgres=# WITH junior_salary AS (
 SELECT salary_range as junior
 FROM salary_grid
 WHERE position_name = 'junior developper'),
senior_salary AS (
 SELECT salary_range as senior
 FROM salary_grid
 WHERE position_name = 'senior developper')
SELECT int4range(junior)  int4range(senior) as check
 FROM junior_salary, senior_salary;
check
-------
t
(1 row)

這里顯示的是初級和高級職位之間的工資重疊部分。

你還可以設定無上下限的范圍類型,或者是只有上限或者下限的范圍類型,讓我們來看一個非常現實的例子:
 

postgres# UPDATE salary_grid SET salary_range = '[50000,)' WHERE position_name = 'postgres developper';
UPDATE 0 1
postgres=# SELECT salary_range @> 60000000 as check
postgres-# FROM salary_grid WHERE position_name = 'postgres developper';
check
-------
t
(1 row)

你可以使用 lower_inf 或者 upper_inf 來檢查范圍的無限值。

Postgres 還有其他一些內嵌的函數(如 isempty),這個可以直接從官方文檔中獲取詳細信息。

你還可以閱讀《PostgreSQL 的數組》

您可能感興趣的文章:
  • 詳細講解PostgreSQL中的全文搜索的用法
  • 使用Bucardo5實現PostgreSQL的主數據庫復制
  • 在PostgreSQL的基礎上創建一個MongoDB的副本的教程
  • 在PostgreSQL中使用數組時值得注意的一些地方
  • 使用Ruby on Rails和PostgreSQL自動生成UUID的教程
  • 在PostgreSQL中使用日期類型時一些需要注意的地方
  • 一個提升PostgreSQL性能的小技巧
  • 在PostgreSQL中實現遞歸查詢的教程
  • 在PostgreSQL上安裝并使用擴展模塊的教程
  • 深入解讀PostgreSQL中的序列及其相關函數的用法

標簽:荊門 威海 景德鎮 那曲 江蘇 淮安 柳州 瀘州

巨人網絡通訊聲明:本文標題《介紹PostgreSQL中的范圍類型特性》,本文關鍵詞  介紹,PostgreSQL,中的,范圍,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《介紹PostgreSQL中的范圍類型特性》相關的同類信息!
  • 本頁收集關于介紹PostgreSQL中的范圍類型特性的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: h虐扎小核花蒂| 国产在线精品拍揄自揄免费| 看久久| 国产日批视频| 国产目拍亚洲精品二区91 | 日韩精品AV一区二区三区无码视频 | 成人午夜私人影院入口| 久久久久久精品国产sm调教樱花 | 无码精品人妻一区二区红楼| 亚洲欧美午夜精品无码站长工具| 最近中文字幕在线播放| 国产伦理播放一区二区| 狂揉吃奶胸高潮视频在线| 欧美精品一区二区三区视频| 啊啊啊不要好舒服| 曰批视频免费40分钟日本| 欧美一区二区三区在线播放| 国产AV一区二区三区在线观看| 又大又爽又黄无码A片片一级视频| 免费无码又爽又黄又刺激网站| 厨房掀起裙子从后面进去| 任我爽在线观看| 美女脱了内裤打开腿让男人图片| 欧洲美女裸体做爰XXXⅩ24| 高清情侣国语自产拍在线| 久草免费资源视频| 宝贝别吸了都硬了h| 人猿泰山成h版未删减| 西西人体扒开大胆大尺度展露| gif动态图性污gif动态图| 秋霞无码免费AV鲁丝片秋霞| 久久老色鬼天天综合网观看 | 相泽亚洲一区中文字幕| sg99.ⅹyz丝瓜视频安卓下载| 九色PORNY丨国产丝袜福利 | 极品女学生被灌醉玩弄的小说| 91在线无码精品秘?国产阿朱 | 午夜视频免费国产在线| 国产亚洲精品久久久久苍井松| 东北少妇高内谢69XXXXX| 久久久久久久久免费影院|