发布时间 : 星期五 文章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