PostgreSQL 支持多种内置函数,这些函数可以对不同的数据类型进行操作
-
数值类型函数:
- abs(x):返回 x 的绝对值。
- acos(x):返回 x 的反余弦值。
- asin(x):返回 x 的反正弦值。
- atan(x):返回 x 的反正切值。
- atan2(y, x):返回从 x 轴到点 (x, y) 的角度值。
- ceil(x):返回大于或等于 x 的最小整数。
- floor(x):返回小于或等于 x 的最大整数。
- round(x):返回 x 四舍五入后的整数。
- sqrt(x):返回 x 的平方根。
- trunc(x):返回 x 截断为整数部分后的值。
- random():返回一个 [0.0, 1.0) 之间的随机浮点数。
- random_range(a, b):返回一个在区间 [a, b] 内的随机浮点数。
- sign(x):返回 x 的符号(1, 0 或 -1)。
- exp(x):返回 e 的 x 次幂。
- log(x):返回 x 的自然对数(以 e 为底)。
- log10(x):返回 x 的以 10 为底的对数。
- power(x, y):返回 x 的 y 次幂。
- mod(x, y):返回 x 除以 y 的余数。
- pi():返回圆周率 π 的值。
- radians(x):将角度 x 转换为弧度。
- degrees(x):将弧度 x 转换为角度。
- length(x):返回 x 的长度(对于字符串类型,表示字符串的长度;对于数组类型,表示数组的长度)。
-
字符串类型函数:
- length(x):返回字符串 x 的长度。
- substring(x, start, length):从字符串 x 中提取子字符串,从 start 位置开始,长度为 length。
- lower(x):将字符串 x 转换为小写。
- upper(x):将字符串 x 转换为大写。
- trim(x):删除字符串 x 两端的空白字符。
- ltrim(x):删除字符串 x 左侧的空白字符。
- rtrim(x):删除字符串 x 右侧的空白字符。
- replace(x, old, new):将字符串 x 中的所有 old 子串替换为 new 子串。
- position(x, substring):返回子字符串在字符串 x 中首次出现的位置,如果没有找到则返回 NULL。
- split(x, delimiter):使用指定的分隔符 delimiter 将字符串 x 分割为子字符串数组。
- concat(x, y, …):将多个字符串连接成一个字符串。
- exists(x):检查字符串 x 是否为非空。
- char_length(x):返回字符串 x 的字符长度(对于多字节字符,返回实际字符数)。
-
日期和时间类型函数:
- now():返回当前的日期和时间。
- current_date():返回当前的日期。
- current_time():返回当前的时间。
- current_timestamp():返回当前的日期和时间。
- interval ‘n’ second:返回 n 秒的间隔。
- interval ‘n’ minute:返回 n 分钟的间隔。
- interval ‘n’ hour:返回 n 小时的间隔。
- interval ‘n’ day:返回 n 天的间隔。
- interval ‘n’ month:返回 n 个月的间隔。
- interval ‘n’ year:返回 n 年的间隔。
- age(date):计算两个日期之间的年龄。
- extract(field FROM source):从日期或时间源中提取指定字段的值。
- date_trunc(field FROM source):将日期或时间源截断为指定字段的值。
- date_part(‘field’, source):与 date_trunc 类似,但返回的是一个字符串。
- make_date(year, month, day):根据给定的年、月、日创建一个日期。
- make_time(hour, minute, second, microsecond):根据给定的时、分、秒和微秒创建一个时间。
- make_timestamp(year, month, day, hour, minute, second, microsecond):根据给定的年、月、日、时、分、秒和微秒创建一个 timestamp。
- to_char(source, format):将日期或时间源转换为指定格式的字符串。
- to_date(string, format):将字符串转换为日期,使用指定的格式。
- to_time(string, format):将字符串转换为时间,使用指定的格式。
- to_timestamp(string, format):将字符串转换为 timestamp,使用指定的格式。
- next_day(date):返回给定日期之后的第一个工作日。
- last_day(date):返回给定日期所在月份的最后一天。
- age(date1, date2):计算两个日期之间的年龄。
- interval_to_str(interval, format):将间隔转换为指定格式的字符串。
-
布尔类型函数:
- bool_or(x, y):当 x 或 y 为 TRUE 时返回 TRUE,否则返回 FALSE。
- bool_and(x, y):当 x 和 y 都为 TRUE 时返回 TRUE,否则返回 FALSE。
- bool_not(x):返回 x 的逻辑非。
- is_true(x):当 x 为 TRUE 时返回 TRUE,否则返回 FALSE。
- is_false(x):当 x 为 FALSE 时返回 TRUE,否则返回 FALSE。
- is_null(x):当 x 为 NULL 时返回 TRUE,否则返回 FALSE。
-
数组类型函数:
- array_length(array, dimension):返回数组的第 dimension 维度的长度。
- array_lower(array, dimension):返回数组的第 dimension 维度的下标,该下标对应的元素值为 1。
- array_upper(array, dimension):返回数组的第 dimension 维度的上标,该上标对应的元素值为 array_length(array, dimension)。
- array_cat(array1, array2, …):将多个数组连接成一个数组。
- array_append(array, element):将元素追加到数组的末尾。
- array_prepend(array, element):将元素插入到数组的开头。
- array_remove(array, value):从数组中移除所有等于 value 的元素。
- array_replace(array, old_value, new_value):将数组中所有等于 old_value 的元素替换为 new_value。
- array_agg(expression):将多个表达式的值聚合成一个数组。
- array_distinct(array):返回数组中的唯一元素组成的数组。
- array_fill(value, start, count):用指定值填充数组的指定范围。
- array_position(array, element):返回元素在数组中首次出现的位置,如果没有找到则返回 NULL。
- array_to_string(array, delimiter):将数组转换为以指定分隔符分隔的字符串。
- string_to_array(string, delimiter):将指定分隔符分隔的字符串转换为数组。
-
其他类型函数:
- json_extract_path(json, path):从 JSON 对象中提取指定路径的值。
- jsonb_extract_path(jsonb, path):从 JSONB 对象中提取指定路径的值。
- json_agg(expression):将多个表达式的值聚合成一个 JSON 数组。
- jsonb_agg(expression):将多个表达式的值聚合成一个 JSONB 数组。
- xmlforest(path, …):从 XML 对象中提取指定路径的元素,并将它们作为数组返回。
- xmlconcat(xml1, xml2, …):将多个 XML 对象连接成一个 XML 对象。
- xmlelement(name, content):创建一个具有指定名称和内容的 XML 元素。
- xmlforest(path, …):从 XML 对象中提取指定路径的元素,并将它们作为数组返回。
- xmlconcat(xml1, xml2, …):将多个 XML 对象连接成一个 XML 对象。
- xmlelement(name, content):创建一个具有指定名称和内容的 XML 元素。
这些函数只是 PostgreSQL 支持的众多函数中的一部分。您可以根据需要选择合适的函数来处理不同类型的数据。