PosegreSQL基礎回顧(第 9 章 函數和操作符)

来源:https://www.cnblogs.com/soulxj/archive/2020/05/07/12843986.html
-Advertisement-
Play Games

來源:http://www.postgres.cn/docs/11/ 9.7. 模式匹配 PostgreSQL提供了三種獨立的實現模式匹配的方法:SQL LIKE操作符、更近一些的SIMILAR TO操作符(SQL:1999 里添加進來的)和POSIX-風格的正則表達式。除了這些基本的“這個串匹配這 ...


來源:http://www.postgres.cn/docs/11/

9.7. 模式匹配 

PostgreSQL提供了三種獨立的實現模式匹配的方法:SQL LIKE操作符、更近一些的SIMILAR TO操作符(SQL:1999 里添加進來的)和POSIX-風格的正則表達式。除了這些基本的這個串匹配這個模式嗎?”操作符外,還有一些函數可用於提取或替換匹配子串併在匹配位置分離一個串。

9.7.1. LIKE

pattern里的下劃線 (_)代表(匹配)任何單個字元; 而一個百分號(%)匹配任何零或更多個字元的序列。

要匹配文本的下劃線或者百分號,而不是匹配其它字元, 在pattern里相應的字元必須 前導逃逸字元。預設的逃逸字元是反斜線,但是你可以用ESCAPE子句指定一個不同的逃逸字元。 要匹配逃逸字元本身,寫兩個逃逸字元。 

關鍵字ILIKE可以用於替換LIKE, 它令該匹配根據活動區域成為大小寫無關。這個不屬於SQL標準而是一個PostgreSQL擴展。

操作符~~等效於LIKE, 而~~*對應ILIKE。 還有 !~~!~~*操作符分別代表NOT LIKENOT ILIKE。所有這些操作符都是PostgreSQL特有的。 

9.7.2. SIMILAR TO正則表達式

SIMILAR TO操作符根據自己的模式是否匹配給定串而返回真或者假。 它和LIKE非常類似,只不過它使用 SQL 標准定義的正則表達式理解模式。 

9.7.3. POSIX正則表達式

表 9.14列出了所有可用於 POSIX 正則表達式模式匹配的操作符。表 9.14. 正則表達式匹配操作符

操作符描述例子
~ 匹配正則表達式,大小寫敏感 'thomas' ~ '.*thomas.*'
~* 匹配正則表達式,大小寫不敏感 'thomas' ~* '.*Thomas.*'
!~ 不匹配正則表達式,大小寫敏感 'thomas' !~ '.*Thomas.*'
!~* 不匹配正則表達式,大小寫不敏感 'thomas' !~* '.*vadim.*'

 

POSIX正則表達式提供了比LIKESIMILAR TO操作符更強大的含義。

9.21. 視窗函數

視窗函數提供在與當前查詢行相關的行集合上執行計算的能力。有關這個特性的介紹請見第 3.5 節。 語法細節則請見第 4.2.8 節

表 9.57列出了內建的視窗函數。註意必須使用視窗函數的語法調用這些函數; 一個OVER子句是必需的。

在這些函數之外,任何內建的或者用戶定義的通用或者統計性聚集(即非有序集和假想集聚集)都可以被用作一個視窗函數,內建聚集的列表請見第 9.20 節。僅當聚集函數調用後面跟著一個OVER子句時,聚集函數才會像視窗函數那樣工作,否則它們會按非視窗聚集的方式運行並且為整個集合返回一個單一行。

表 9.57. 通用視窗函數

函數返回類型描述
row_number() bigint 當前行在其分區中的行號,從1計
rank() bigint 帶間隙的當前行排名; 與該行的第一個同等行的row_number相同
dense_rank() bigint 不帶間隙的當前行排名; 這個函數計數同等組
percent_rank() double precision 當前行的相對排名: (rank- 1) / (總行數 - 1)
cume_dist() double precision 累積分佈:(在當前行之前或者平級的分區行數) / 分區行總數
ntile(num_buckets integer) integer 從1到參數值的整數範圍,儘可能等分分區
lag(value anyelement [, offset integer [, default anyelement ]]) value的類型相同 返回value,它在分區內當前行的之前offset個位置的行上計算;如果沒有這樣的行,返回default替代(必須和value類型相同)。offsetdefault都是根據當前行計算的結果。如果忽略它們,則offset預設是1,default預設是空值
lead(value anyelement [, offset integer [, default anyelement ]]) value類型相同 返回value,它在分區內當前行的之後offset個位置的行上計算;如果沒有這樣的行,返回default替代(必須和value類型相同)。offsetdefault都是根據當前行計算的結果。如果忽略它們,則offset預設是1,default預設是空值
first_value(value any) same type as value 返回在視窗幀中第一行上計算的value
last_value(value any) value類型相同 返回在視窗幀中最後一行上計算的value
nth_value(value anynth integer) value類型相同 返回在視窗幀中第nth行(行從1計數)上計算的value;沒有這樣的行則返回空值

 

表 9.57中列出的所有函數都依賴於相關視窗定義的ORDER BY子句指定的排序順序。僅考慮ORDER BY列時不能區分的行被稱為是同等行。定義的這四個排名函數(包括 cume_dist),對於任何兩個同等行的答案相同。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Ansible Tests 詳解與使用案例 主機規劃 添加用戶賬號 說明: 1、 運維人員使用的登錄賬號; 2、 所有的業務都放在 /app/ 下「yun用戶的家目錄」,避免業務數據亂放; 3、 該用戶也被 ansible 使用,因為幾乎所有的生產環境都是禁止 root 遠程登錄的(因此該 yun ...
  • 應用系統分散式構建運維 1+x初級,項目四 部署主從資料庫 基礎環境安裝 準備兩台主機 修改主機名 # hostnamectl set-hostname mysql1 # hostnamectl set-hostname mysql2 關閉防火牆及SELinux服務(兩個節點) # setenfor ...
  • nginx實際把http請求處理流程劃分為了11個階段,這樣劃分的原因是將請求的執行邏輯細分,以模塊為單位進行處理,各個階段可以包含任意多個http模塊並以流水線的方式處理請求。這樣做的好處是使處理過程更加靈活、降低耦合度。可以讓每個HTTP模塊可以僅僅專註於完成一個獨立,簡單的功能。而一個請求的完 ...
  • 安裝:yum install firewalld 1、firewalld的基本使用 啟動: systemctl start firewalld 查看狀態: systemctl status firewalld 禁用,禁止開機啟動: systemctl disable firewalld 停止運行: ...
  • [TOC] 前言 1.備份數據的意義 運維工作的核心簡單概括起來就是兩件事:第一個是保護公司的數據,第二個是讓網站能夠7 24小時提供服務。 雖然這兩件事情都很重要,但是相比較而言,丟失一部分數據和讓網站7 24小時提供服務,哪個更重要呢? 對於絕大多數企業來講,失去數據就相當於失去商機,失去產品, ...
  • 虛擬機 下安裝tools tools安裝後桌面會全屏,自適應屏幕 環境準備 虛擬機 "安裝虛擬機教程" linux系統 "ubuntu下載地址" 1. 虛擬機中點擊》虛擬機》安裝tool 2. 打開終端命令視窗(快捷鍵ctrl+alt+t) 3. 輸入su 擁有超級用戶的許可權(提示:第一次打開是沒有 ...
  • ​作者:良知猶存 轉載授權以及圍觀:歡迎添加微信:Allen-Iverson-me-LYN 前言 最近想開發一段單片機的代碼,代碼本身有很多的重覆元素,這重覆定義的一些結構體使用起來有些繁瑣,所以就想用C++開發,C++的繼承 模板類可以很容易的解決這些問題。因為在單片機運行,習慣用MDK或者IAR ...
  • 第四天MySQL 連接查詢(內連接、外連接、交叉連接)(sql99版本下) 子查詢: select 後面(標量子查詢) from 後面(表子查詢) where 或having後面(標量子查詢、列子查詢、行子查詢) exists後面(相關子查詢)(表子查詢) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...