PostgreSQL学习手册 联系客服

发布时间 : 星期五 文章PostgreSQL学习手册更新完毕开始阅读9262e4aaeefdc8d376ee32e3

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] ARRAY[1,2,3] <> ARRAY[1,2,4] ARRAY[1,2,3] < ARRAY[1,2,4] ARRAY[1,4,3] > ARRAY[1,2,4] ARRAY[1,2,3] <= ARRAY[1,2,3] ARRAY[1,4,3] >= ARRAY[1,4,3]

结果 t t t t t t

{1,2,3,4,5,6}

{{1,2,3},{4,5,6},{7,8,9}} {3,4,5,6} {4,5,6,7}

数组与数组连接 ARRAY[1,2,3] || ARRAY[4,5,6]

数组与数组连接 ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] 元素与数组连接 3 || ARRAY[4,5,6] 元素与数组连接 ARRAY[4,5,6] || 7

2. PostgreSQL中提供的用于数组的函数列表:

函数 返回类型 描述 例子 结果

连接两个数组 array_cat(ARRAY[1,2,3], ARRAY[4,5]) {1,2,3,4,5} array_cat(anyarray, anyarray) anyarray

array_append(anyarray, anyelement)

array_prepend(anyelement, anyarray)

向一个数组末

尾附加一个元array_append(ARRAY[1,2], 3) anyarray

素 向一个数组开

头附加一个元array_prepend(1, ARRAY[2,3]) anyarray

素 返回一个数组

array_dims(anyarray)

text

维数的文本表array_dims(ARRAY[[1,2,3], [4,5,6]]) [1:2][1:3] 示

array_lower(anyarray, int) array_upper(anyarray, int)

int int

返回指定的数array_lower(array_prepend(0, 组维数的下界 ARRAY[1,2,3]), 1) 返回指定数组维数的上界 使用提供的分

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}

array_upper(ARRAY[1,2,3,4], 1)

0 4 {1,2,3} {1,2,3}

十二、系统信息函数:

1. PostgreSQL中提供的和数据库相关的函数列表:

名字

current_database() current_schema() current_schemas(boolean) current_user inet_client_addr() inet_client_port() inet_server_addr() inet_server_port() session_user

pg_postmaster_start_time() user version()

返回类型 name name name[] name inet int inet int name timestamp name text

描述

当前数据库的名字 当前模式的名字 在搜索路径中的模式名字 目前执行环境下的用户名 连接的远端地址 连接的远端端口 连接的本地地址 连接的本地端口 会话用户名

postmaster启动的时间 current_user 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)

has_database_privilege(database,privilege)

has_function_privilege(user,function,privilege)

has_function_privilege(function,privilege)

问CREATE/TEMPORARY 数据库的权限 当前用户是否有

访CREATE/TEMPORARY 问数据库的权限 用户是否有

访问EXECUTE

函数的权限

当前

EXECUTE