婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PostgreSQL教程(七):函數和操作符詳解(3)

PostgreSQL教程(七):函數和操作符詳解(3)

熱門標簽:海豐有多少商家沒有地圖標注 打電話智能電銷機器人授權 合肥公司外呼系統運營商 美容工作室地圖標注 辦公外呼電話系統 地圖標注和圖片名稱的區別 漯河外呼電話系統 重慶自動外呼系統定制 外呼調研系統

九、序列操作函數:

    序列對象(也叫序列生成器)都是用CREATE SEQUENCE創建的特殊的單行表。一個序列對象通常用于為行或者表生成唯一的標識符。下面序列函數,為我們從序列對象中獲取最新的序列值提供了簡單和并發讀取安全的方法。

 

函數 返回類型 描述
nextval(regclass) bigint 遞增序列對象到它的下一個數值并且返回該值。這個動作是自動完成的。即使多個會話并發運行nextval,每個進程也會安全地收到一個唯一的序列值。
currval(regclass) bigint 在當前會話中返回最近一次nextval抓到的該序列的數值。(如果在本會話中從未在該序列上調用過 nextval,那么會報告一個錯誤。)請注意因為此函數返回一個會話范圍的數值,而且也能給出一個可預計的結果,因此可以用于判斷其它會話是否執行過nextval。
lastval() bigint 返回當前會話里最近一次nextval返回的數值。這個函數等效于currval,只是它不用序列名為參數,它抓取當前會話里面最近一次nextval使用的序列。如果當前會話還沒有調用過nextval,那么調用lastval將會報錯。
setval(regclass, bigint) bigint 重置序列對象的計數器數值。設置序列的last_value字段為指定數值并且將其is_called字段設置為true,表示下一次nextval將在返回數值之前遞增該序列。
setval(regclass, bigint, boolean) bigint 重置序列對象的計數器數值。功能等同于上面的setval函數,只是is_called可以設置為true或false。如果將其設置為false,那么下一次nextval將返回該數值,隨后的nextval才開始遞增該序列。

  對于regclass參數,僅需用單引號括住序列名即可,因此它看上去就像文本常量。為了達到和處理普通SQL對象一樣的兼容性,這個字串將被轉換成小寫,除非該序列名是用雙引號括起,如:
 

復制代碼 代碼如下:

    nextval('foo')     --操作序列號foo
    nextval('FOO')    --操作序列號foo
    nextval('"Foo"')   --操作序列號Foo
    SELECT setval('foo', 42);    --下次nextval將返回43
    SELECT setval('foo', 42, true);   
    SELECT setval('foo', 42, false);   --下次nextval將返回42

   
十、條件表達式:

    1. CASE:
    SQL CASE表達式是一種通用的條件表達式,類似于其它語言中的if/else語句。
 

復制代碼 代碼如下:

    CASE WHEN condition THEN result
        [WHEN ...]
        [ELSE result]
    END
 

    condition是一個返回boolean的表達式。如果為真,那么CASE表達式的結果就是符合條件的result。如果結果為假,那么以相同方式搜尋隨后的WHEN子句。如果沒有WHEN condition為真,那么case表達式的結果就是在ELSE子句里的值。如果省略了ELSE子句而且沒有匹配的條件,結果為NULL,如:
 
復制代碼 代碼如下:

    MyTest=> SELECT * FROM testtable;
     i
    ---
     1
     2
     3
    (3 rows)
    MyTest=> SELECT i, CASE WHEN i=1 THEN 'one'
    MyTest->                         WHEN i=2 THEN 'two'
    MyTest->                         ELSE 'other'
    MyTest->                END
    MyTest-> FROM testtable;
     i | case
    ---+-------
     1 | one
     2 | two
     3 | other
    (3 rows)
 

    注:CASE表達式并不計算任何對于判斷結果并不需要的子表達式。
   
    2. COALESCE:

    COALESCE返回它的第一個非NULL的參數的值。它常用于在為顯示目的檢索數據時用缺省值替換NULL值。
 

復制代碼 代碼如下:

    COALESCE(value[, ...])
 

    和CASE表達式一樣,COALESCE將不會計算不需要用來判斷結果的參數。也就是說,在第一個非空參數右邊的參數不會被計算。
   
    3. NULLIF:
    當且僅當value1和value2相等時,NULLIF才返回NULL。否則它返回value1。
 
復制代碼 代碼如下:

    NULLIF(value1, value2)
    MyTest=> SELECT NULLIF('abc','abc');
     nullif
    --------
   
    (1 row)   
    MyTest=> SELECT NULLIF('abcd','abc');
     nullif
    --------
     abcd
    (1 row)

    4. GREATEST和LEAST:
    GREATEST和LEAST函數從一個任意的數字表達式列表里選取最大或者最小的數值。列表中的NULL數值將被忽略。只有所有表達式的結果都是NULL的時候,結果才會是NULL。
 
復制代碼 代碼如下:

    GREATEST(value [, ...])
    LEAST(value [, ...])
    MyTest=> SELECT GREATEST(1,3,5);
     greatest
    ----------
            5
    (1 row) 
    MyTest=> SELECT LEAST(1,3,5,NULL);
     least
    -------
         1
    (1 row)

十一、數組函數和操作符:

    1. PostgreSQL中提供的用于數組的操作符列表:

操作符 描述 例子 結果
= 等于 ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3] t
> 不等于 ARRAY[1,2,3] > ARRAY[1,2,4] t
小于 ARRAY[1,2,3] ARRAY[1,2,4] t
> 大于 ARRAY[1,4,3] > ARRAY[1,2,4] t
= 小于或等于 ARRAY[1,2,3] = ARRAY[1,2,3] t
>= 大于或等于 ARRAY[1,4,3] >= ARRAY[1,4,3] t
|| 數組與數組連接 ARRAY[1,2,3] || ARRAY[4,5,6] {1,2,3,4,5,6}
|| 數組與數組連接 ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] {{1,2,3},{4,5,6},{7,8,9}}
|| 元素與數組連接 3 || ARRAY[4,5,6] {3,4,5,6}
|| 元素與數組連接 ARRAY[4,5,6] || 7 {4,5,6,7}

    2. PostgreSQL中提供的用于數組的函數列表:

函數 返回類型 描述 例子 結果
array_cat(anyarray, anyarray) anyarray 連接兩個數組 array_cat(ARRAY[1,2,3], ARRAY[4,5]) {1,2,3,4,5}
array_append(anyarray, anyelement) anyarray 向一個數組末尾附加一個元素 array_append(ARRAY[1,2], 3) {1,2,3}
array_prepend(anyelement, anyarray) anyarray 向一個數組開頭附加一個元素 array_prepend(1, ARRAY[2,3]) {1,2,3}
array_dims(anyarray) text 返回一個數組維數的文本表示 array_dims(ARRAY[[1,2,3], [4,5,6]]) [1:2][1:3]
array_lower(anyarray, int) int 返回指定的數組維數的下界 array_lower(array_prepend(0, ARRAY[1,2,3]), 1) 0
array_upper(anyarray, int) int 返回指定數組維數的上界 array_upper(ARRAY[1,2,3,4], 1) 4
array_to_string(anyarray, text) text 使用提供的分隔符連接數組元素 array_to_string(ARRAY[1, 2, 3], '~^~') 1~^~2~^~3
string_to_array(text, text) text[] 使用指定的分隔符把字串拆分成數組元素 string_to_array('xx~^~yy~^~zz', '~^~') {xx,yy,zz}

十二、系統信息函數:

    1. PostgreSQL中提供的和數據庫相關的函數列表:

 

名字 返回類型 描述
current_database() name 當前數據庫的名字
current_schema() name 當前模式的名字
current_schemas(boolean) name[] 在搜索路徑中的模式名字
current_user name 目前執行環境下的用戶名
inet_client_addr() inet 連接的遠端地址
inet_client_port() int 連接的遠端端口
inet_server_addr() inet 連接的本地地址
inet_server_port() int 連接的本地端口
session_user name 會話用戶名
pg_postmaster_start_time() timestamp postmaster啟動的時間
user name current_user
version() text PostgreSQL版本信息

    2. 允許用戶在程序里查詢對象訪問權限的函數:

名字 描述 可用權限
has_table_privilege(user,table,privilege) 用戶是否有訪問表的權限 SELECT/INSERT/UPDATE/DELETE/RULE/REFERENCES/TRIGGER
has_table_privilege(table,privilege) 當前用戶是否有訪問表的權限 SELECT/INSERT/UPDATE/DELETE/RULE/REFERENCES/TRIGGER
has_database_privilege(user,database,privilege) 用戶是否有訪問數據庫的權限 CREATE/TEMPORARY
has_database_privilege(database,privilege) 當前用戶是否有訪問數據庫的權限 CREATE/TEMPORARY
has_function_privilege(user,function,privilege) 用戶是否有訪問函數的權限 EXECUTE
has_function_privilege(function,privilege) 當前用戶是否有訪問函數的權限 EXECUTE
has_language_privilege(user,language,privilege) 用戶是否有訪問語言的權限 USAGE
has_language_privilege(language,privilege) 當前用戶是否有訪問語言的權限 USAGE
has_schema_privilege(user,schema,privilege) 用戶是否有訪問模式的權限 CREAT/USAGE
has_schema_privilege(schema,privilege) 當前用戶是否有訪問模式的權限 CREAT/USAGE
has_tablespace_privilege(user,tablespace,privilege) 用戶是否有訪問表空間的權限 CREATE
has_tablespace_privilege(tablespace,privilege) 當前用戶是否有訪問表空間的權限 CREATE

注:以上函數均返回boolean類型。要評估一個用戶是否在權限上持有賦權選項,給權限鍵字附加 WITH GRANT OPTION;比如 'UPDATE WITH GRANT OPTION'。
    3. 模式可視性查詢函數:
    那些判斷一個對象是否在當前模式搜索路徑中可見的函數。 如果一個表所在的模式在搜索路徑中,并且沒有同名的表出現在搜索路徑的更早的地方,那么就說這個表視可見的。 它等效于表可以不帶明確模式修飾進行引用。

 

名字 描述 應用類型
pg_table_is_visible(table_oid) 該表/視圖是否在搜索路徑中可見 regclass
pg_type_is_visible(type_oid) 該類/視圖型是否在搜索路徑中可見 regtype
pg_function_is_visible(function_oid) 該函數是否在搜索路徑中可見 regprocedure
pg_operator_is_visible(operator_oid) 該操作符是否在搜索路徑中可見 regoperator
pg_opclass_is_visible(opclass_oid) 該操作符表是否在搜索路徑中可見 regclass
pg_conversion_is_visible(conversion_oid) 轉換是否在搜索路徑中可見 regoperator


 注:以上函數均返回boolean類型,所有這些函數都需要對象 OID 標識作為檢查的對象。
 

復制代碼 代碼如下:

    postgres=# SELECT pg_table_is_visible('testtable'::regclass);
     pg_table_is_visible
    ---------------------
     t
    (1 row)

    4. 系統表信息函數:

名字 返回類型 描述
format_type(type_oid,typemod) text 獲取一個數據類型的SQL名稱
pg_get_viewdef(view_oid) text 為視圖獲取CREATE VIEW命令
pg_get_viewdef(view_oid,pretty_bool) text 為視圖獲取CREATE VIEW命令
pg_get_ruledef(rule_oid) text 為規則獲取CREATE RULE命令
pg_get_ruledef(rule_oid,pretty_bool) text 為規則獲取CREATE RULE命令
pg_get_indexdef(index_oid) text 為索引獲取CREATE INDEX命令
pg_get_indexdef(index_oid,column_no,pretty_bool) text 為索引獲取CREATE INDEX命令, 如果column_no不為零,則是只獲取一個索引字段的定義
pg_get_triggerdef(trigger_oid) text 為觸發器獲取CREATE [CONSTRAINT] TRIGGER
pg_get_constraintdef(constraint_oid) text 獲取一個約束的定義
pg_get_constraintdef(constraint_oid,pretty_bool) text 獲取一個約束的定義
pg_get_expr(expr_text,relation_oid) text 反編譯一個表達式的內部形式,假設其中的任何Vars都引用第二個參數指出的關系
pg_get_expr(expr_text,relation_oid, pretty_bool) text 反編譯一個表達式的內部形式,假設其中的任何Vars都引用第二個參數指出的關系
pg_get_userbyid(roleid) name 獲取給出的ID的角色名
pg_get_serial_sequence(table_name,column_name) text 獲取一個serial或者bigserial字段使用的序列名字
pg_tablespace_databases(tablespace_oid) setof oid 獲取在指定表空間(OID表示)中擁有對象的一套數據庫的OID的集合

    這些函數大多數都有兩個變種,其中一個可以選擇對結果的"漂亮的打印"。 漂亮打印的格式更容易讀,但是缺省的格式更有可能被將來的PostgreSQL版本用同樣的方法解釋;如果是用于轉儲,那么盡可能避免使用漂亮打印。 給漂亮打印參數傳遞false生成的結果和那個沒有這個參數的變種生成的結果完全一樣。

十三、系統管理函數:

    1. 查詢以及修改運行時配置參數的函數:

 

名字 返回類型 描述
current_setting(setting_name) text 當前設置的值
set_config(setting_name,new_value,is_local) text 設置參數并返回新值

  current_setting用于以查詢形式獲取setting_name設置的當前數值。它和SQL命令SHOW是等效的。 比如:
 

復制代碼 代碼如下:

    MyTest=# SELECT current_setting('datestyle');
     current_setting
    -----------------
     ISO, YMD
    (1 row)
 

    set_config將參數setting_name設置為new_value。如果is_local設置為true,那么新數值將只應用于當前事務。如果你希望新的數值應用于當前會話,那么應該使用false。它等效于SQL命令SET。比如:
 
復制代碼 代碼如下:

    MyTest=# SELECT set_config('log_statement_stats','off', false);
     set_config
    ------------
     off
    (1 row)
   

    2. 數據庫對象尺寸函數:

 

名字 返回類型 描述
pg_tablespace_size(oid) bigint 指定OID代表的表空間使用的磁盤空間
pg_tablespace_size(name) bigint 指定名字的表空間使用的磁盤空間
pg_database_size(oid) bigint 指定OID代表的數據庫使用的磁盤空間
pg_database_size(name) bigint 指定名稱的數據庫使用的磁盤空間
pg_relation_size(oid) bigint 指定OID代表的表或者索引所使用的磁盤空間
pg_relation_size(text) bigint 指定名稱的表或者索引使用的磁盤空間。這個名字可以用模式名修飾
pg_total_relation_size(oid) bigint 指定OID代表的表使用的磁盤空間,包括索引和壓縮數據
pg_total_relation_size(text) bigint 指定名字的表所使用的全部磁盤空間,包括索引和壓縮數據。表名字可以用模式名修飾。
pg_size_pretty(bigint) text 把字節計算的尺寸轉換成一個人類易讀的尺寸單位

    3. 數據庫對象位置函數: 

名字 返回類型 描述
pg_relation_filenode(relationregclass) oid 獲取指定對象的文件節點編號(通常為對象的oid值)。
pg_relation_filepath(relationregclass) text 獲取指定對象的完整路徑名。

復制代碼 代碼如下:

mydatabase=# select pg_relation_filenode('testtable');
     pg_relation_filenode
    ----------------------
                    17877
    (1 row)   
    mydatabase=# select pg_relation_filepath('testtable');
                 pg_relation_filepath
    ----------------------------------------------
     pg_tblspc/17633/PG_9.1_201105231/17636/17877
    (1 row)  

    該博客中提供的所有信息均源自PostgreSQL官方文檔,編寫該篇博客的主要目的是便于今后的查閱,特此聲明。 

您可能感興趣的文章:
  • PostgreSQL教程(五):函數和操作符詳解(1)
  • PostgreSQL教程(六):函數和操作符詳解(2)
  • PostgreSQL基礎知識之SQL操作符實踐指南

標簽:株洲 錦州 晉城 珠海 烏海 來賓 衡陽 蚌埠

巨人網絡通訊聲明:本文標題《PostgreSQL教程(七):函數和操作符詳解(3)》,本文關鍵詞  PostgreSQL,教程,七,函數,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL教程(七):函數和操作符詳解(3)》相關的同類信息!
  • 本頁收集關于PostgreSQL教程(七):函數和操作符詳解(3)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色乱码一区二区三区88| 国产精品日产欧美久久久久| 日韩电影一区二区三区| 久久久久久久国产精品影院| 欧美日韩卡一卡二| 成人av网在线| 国产东北露脸精品视频| 午夜精品一区在线观看| 亚洲欧美日韩国产成人精品影院 | 欧美日韩日日骚| 99精品一区二区| 国产99精品视频| 日韩久久一区二区| 久久蜜桃香蕉精品一区二区三区| 欧美一区二区视频在线观看2020 | 午夜天堂影视香蕉久久| 自拍av一区二区三区| 中文字幕av资源一区| 中文字幕一区免费在线观看| 日韩精品资源二区在线| 欧美日韩国产大片| 欧美日韩精品一区视频| 在线国产电影不卡| 欧美性一级生活| 欧美一a一片一级一片| 在线免费不卡电影| 在线观看av一区| 在线免费观看一区| 欧美日韩在线不卡| 欧美三电影在线| 91精品国产综合久久久久| 91精品国产91久久综合桃花| 日韩一区二区精品| 欧美精品一区二区三区蜜桃视频 | 一区二区三区中文字幕| 亚洲天堂a在线| 亚洲网友自拍偷拍| 男女性色大片免费观看一区二区 | 国产无一区二区| 国产日韩欧美综合一区| 中文字幕一区免费在线观看| 玉米视频成人免费看| 亚洲va欧美va天堂v国产综合| 亚洲永久精品大片| 蜜臀a∨国产成人精品| 国产乱对白刺激视频不卡| av一区二区三区在线| 欧美最猛性xxxxx直播| 日韩视频在线一区二区| 日韩女优av电影| 中文字幕av免费专区久久| 亚洲综合丝袜美腿| 精品一区二区三区香蕉蜜桃 | 99久久国产综合精品麻豆| 99久久精品国产导航| 欧美美女激情18p| 国产目拍亚洲精品99久久精品| 亚洲精品v日韩精品| 看电影不卡的网站| 色综合久久久久| 欧美va亚洲va| 一区二区三区精品在线观看| 美女视频一区二区三区| 91亚洲精品久久久蜜桃| 精品国产乱码久久久久久免费| 最新中文字幕一区二区三区| 偷拍一区二区三区| 日韩中文字幕1| 亚洲欧美一区二区在线观看| 亚洲成a天堂v人片| 精品日产卡一卡二卡麻豆| 日韩一二在线观看| 精品国产一区二区在线观看| 国产精品久久综合| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产美女精品一区二区三区| 99久久免费精品| 日韩欧美电影一区| 亚洲一区二区三区国产| 国产高清在线精品| 欧美电影免费观看高清完整版在| 久久久久综合网| 美女视频第一区二区三区免费观看网站| 91首页免费视频| 欧美激情中文字幕| 国产精品123区| 日韩欧美一区二区视频| 亚洲国产成人porn| 99国产精品久| 中文字幕中文字幕一区| 国产精品一区二区三区网站| 欧美tk丨vk视频| 美女免费视频一区| 91精品国产麻豆| 日韩精品成人一区二区在线| 欧美日韩精品是欧美日韩精品| 亚洲免费在线视频一区 二区| 成人午夜av影视| 国产视频一区在线播放| 国产美女av一区二区三区| 日韩三级免费观看| 蜜臀av性久久久久av蜜臀妖精| 欧美日韩美少妇| 欧美aaaaa成人免费观看视频| 在线不卡中文字幕| 蜜臀久久久99精品久久久久久| 欧美欧美欧美欧美| 日韩av电影一区| 日韩欧美的一区| 国产乱码精品一区二区三区忘忧草| 26uuu久久天堂性欧美| 久久se精品一区精品二区| 亚洲精品一区二区三区香蕉| 国产精品18久久久久久久网站| 欧美极品少妇xxxxⅹ高跟鞋| 国产真实乱子伦精品视频| 久久亚洲影视婷婷| 99久久婷婷国产综合精品| 亚洲精品成人悠悠色影视| 欧美群妇大交群的观看方式| 久久不见久久见免费视频7| 国产午夜亚洲精品羞羞网站| 大胆亚洲人体视频| 一区二区在线电影| 欧美一区二区三区免费观看视频| 国产精品一二三| 中文字幕一区二区三区色视频| 99re这里只有精品6| 亚洲综合清纯丝袜自拍| 欧美一级二级三级蜜桃| 精品久久久久99| 免费三级欧美电影| 懂色av一区二区三区免费观看| 国产三级久久久| 日本韩国欧美国产| 日韩激情视频在线观看| 精品国产一区二区三区久久久蜜月 | 成人av电影免费观看| 一区二区在线免费观看| 中文字幕一区二区三区精华液| 欧美性猛片aaaaaaa做受| 久久99久国产精品黄毛片色诱| 中文字幕一区二区在线播放| 欧美一区二区视频在线观看| 成人高清免费观看| 免费的成人av| 亚洲精品视频在线观看免费| 欧美tk丨vk视频| 美女视频黄免费的久久 | 精品人在线二区三区| 色综合久久88色综合天天6| 久久国产精品99精品国产| 亚洲黄色免费电影| 久久精品一级爱片| 91精品国产色综合久久不卡蜜臀| k8久久久一区二区三区| 日本成人在线电影网| 18涩涩午夜精品.www| 久久久久久久网| 欧美一区二区久久久| 色婷婷久久久亚洲一区二区三区 | 麻豆一区二区三| 亚洲精品免费在线观看| 亚洲综合色网站| 99精品欧美一区二区蜜桃免费| 亚洲欧美日本韩国| 精品成人私密视频| 欧美日本在线播放| 成人黄色软件下载| 激情欧美日韩一区二区| 亚洲视频在线观看三级| 久久噜噜亚洲综合| 精品蜜桃在线看| 91麻豆swag| 狠狠色丁香婷综合久久| 天堂在线一区二区| 一二三四社区欧美黄| 欧美激情在线观看视频免费| 久久网站最新地址| 91成人在线免费观看| 国产很黄免费观看久久| 亚洲精品写真福利| 精品国产电影一区二区| 欧美日韩一二三区| 欧美撒尿777hd撒尿| 色婷婷综合在线| 成人午夜碰碰视频| 国产91精品露脸国语对白| 国产suv一区二区三区88区| 激情久久五月天| 成人在线一区二区三区| 高清在线成人网| 97成人超碰视| 欧洲一区二区三区在线| 欧美日韩成人在线一区| 欧美va亚洲va香蕉在线| 精品日韩一区二区| 国产精品视频免费| 亚洲激情男女视频| 日韩在线观看一区二区|