当前位置: 首页 > news >正文

PostgreSQL——函数

PostgreSQL函数

  • 一、数学函数
    • 1.1、绝对值函数ABS(x)和圆周率函数PI()
    • 1.2、平方根函数SQRT(x)和求余函数MOD(x,y)
    • 1.3、取整函数CEIL(x)、CEILING(x)和FLOOR(x)
    • 1.4、四舍五入函数ROUND(x)和ROUND(x,y)
    • 1.5、符号函数SIGN(x)
    • 1.6、幂运算函数POW(x,y)、POWER(x,y)和EXP(x)
    • 1.7、对数运算函数LOG(x)
    • 1.8、角度与弧度转换函数RADIANS(x)和DEGREES(x)
    • 1.9、正弦函数SIN(x)和反正弦函数ASIN(x)
    • 1.10、余弦函数COS(x)和反余弦函数ACOS(x)
    • 1.11、正切函数、反正切函数和余切函数
  • 二、字符串函数
    • 2.1、字符串字符数CHAR_LENGTH(str)和字符串长度函数LENGTH(s)
    • 2.2、合并字符串函数CONCAT(s1, s2,...)和CONCAT_WS(x,s1,s2,...)
    • 2.3、获取指定长度的字符串函数LEFT(s,n)和RIGHT(s,n)
    • 2.4、填充字符串函数LPAD(s1,len,s2)和RPAD(s1,len,s2)
    • 2.5、删除空格函数LTRIM(s)、RTRIM(s)和TRIM(s)
    • 3.6、删除指定字符串函数TRIM(s1 FROM s)
    • 3.7、重复生成字符串函数REPEAT(s,n)
    • 3.8、替换函数REPLACE(s, s1, s2)
    • 3.9、获取子串函数SUBSTRING(s,n,len)
    • 2.10、匹配子串开始位置函数POSITION(str1 IN str)
    • 2.11、字符串逆序函数REVERSE(s)
  • 三、日期和时间函数
    • 3.1、获取当前日期函数CURRENT_DATE和获取当前时间函数CURRENT_TIME、LOCALTIME
    • 3.2、获取当前日期和时间的函数
    • 3.3、获取日期指定值函数EXTRACT(type FROM d)
    • 3.4、日期和时间运算操作
  • 四、条件判断函数
    • 4.1、CASE value WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE m] END
    • 4.2、CASE WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END
  • 五、系统信息函数
    • 5.1、获取PostgreSQL版本号VERSION()
    • 5.2、获取用户名函数USER和CURRENT_USER
  • 六、加密函数
    • 6.1、加密函数MD5(str)
    • 6.2、加密函数ENCODE(str, pswd_str)
    • 6.3、解密函数DECODE(crypt_str, pswd_str)
  • 七、改变数据类型函数CAST(x AS type)

一、数学函数

数学函数主要用来处理数值数据,主要的数学函数有:绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。当有错误产生时,数学函数
会返回空值NULL。

1.1、绝对值函数ABS(x)和圆周率函数PI()

SELECT ABS(2), ABS(-3.3), ABS(-33);

在这里插入图片描述

-- 保留15位有效数字
SELECT PI();

在这里插入图片描述

1.2、平方根函数SQRT(x)和求余函数MOD(x,y)

SQRT(x)返回非负数x的二次平方根。

SELECT SQRT(9), SQRT(40);

在这里插入图片描述

MOD(x,y)返回x被y除后的余数,MODO对于带有小数部分的数值也起作用,它返回除法运算后的精确余数。

SELECT MOD(31,8), MOD(234, 10), MOD(45.5, 6);

在这里插入图片描述

1.3、取整函数CEIL(x)、CEILING(x)和FLOOR(x)

CEIL(x)和CEILING(x)意义相同,返回不小于x的最小整数值,返回值转化为一个BIGINT。

SELECT CEIL(-3.35), CEILING(3.35);

在这里插入图片描述

FLOOR(x)返回不大于x的最大整数值,返回值转化为一个BIGINT。

SELECT FLOOR(-3.35), FLOOR(3.35);

在这里插入图片描述

1.4、四舍五入函数ROUND(x)和ROUND(x,y)

ROUND(x)返回最接近于参数x的整数,对x值进行四舍五入。

SELECT ROUND(-1.14), ROUND(-1.67), ROUND(1.14), ROUND(1.66);

在这里插入图片描述

ROUND(x,y)返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。

SELECT ROUND(1.38, 1), ROUND(1.38, 0), ROUND(232.38, -1), ROUND(232.38, -2);

在这里插入图片描述

1.5、符号函数SIGN(x)

SIGN(x)返回参数的符号,x的值为负、零或正时,返回结果依次为-1、0或1。

SELECT SIGN(-21), SIGN(0), SIGN(21);

在这里插入图片描述

1.6、幂运算函数POW(x,y)、POWER(x,y)和EXP(x)

POW(x,y)或者POWER(x,y)函数返回x的y次乘方的结果值。

SELECT POW(2,2), POWER(2, 2), POW(2, -2), POWER(2, -2);

在这里插入图片描述

EXP(x)返回e的x乘方后的值。

SELECT EXP(3), EXP(-3), EXP(0);

在这里插入图片描述

1.7、对数运算函数LOG(x)

LOG(x)返回x的自然对数,x相对于基数©的对数。对数定义域不能为负数,否则将会弹出错误信息。

SELECT LOG(3);

在这里插入图片描述

1.8、角度与弧度转换函数RADIANS(x)和DEGREES(x)

RADIANS(x)将参数x由角度转化为弧度。

SELECT RADIANS(90), RADIANS(180);

在这里插入图片描述

DEGREES(x)将参数x由弧度转化为角度。

SELECT DEGREES(PI()), DEGREES(PI() / 2);

在这里插入图片描述

1.9、正弦函数SIN(x)和反正弦函数ASIN(x)

SN(x)返回x的正弦,其中,x为弧度值。

SELECT SIN(1), ROUND(SIN(PI()));

在这里插入图片描述

ASN(x)返回x的反正弦,即正弦为x的值。若x不在-1到1的范围之内,则会弹出错误信息:“输入超出范围”。

SELECT ASIN(0.8414709848078965), ASIN(3);

1.10、余弦函数COS(x)和反余弦函数ACOS(x)

COS(x)返回x的余弦,其中x为弧度值。

SELECT COS(0), COS(PI()), COS(1);

在这里插入图片描述

ACOS(x)返回x的反余弦,即余弦是x的值。若x不在-1到1的范围之内,则会弹出错误信息。

SELECT ACOS(1), ACOS(0);

在这里插入图片描述

1.11、正切函数、反正切函数和余切函数

TAN(x)返回x的正切,其中x为给定的弧度值。

SELECT TAN(0.3), ROUND(TAN(PI() / 4));

在这里插入图片描述

ATAN(x)返回x的反正切,即正切为x的值。

SELECT ATAN(0.30933624960962325), ATAN(1);

在这里插入图片描述

COT(x)返回x的余切。

SELECT COT(0.3), 1 / TAN(0.3), COT(PI() / 4);

在这里插入图片描述

二、字符串函数

2.1、字符串字符数CHAR_LENGTH(str)和字符串长度函数LENGTH(s)

CHAR LENGTH(str)返回值为字符串sr所包含字符的个数。一个多字节字符算作一个单字符。

SELECT CHAR_LENGTH('date'), CHAR_LENGTH('egg');

在这里插入图片描述

LENGTH(s)返回值为字符串的字节长度,使用utf8编码字符集时,一个汉字是3个字节,一个数字或字母算作一个字节。

SELECT LENGTH('date'), LENGTH('egg');

在这里插入图片描述

可以看到,计算的结果与CHAR LENGTH相同,因为英文字符的个数和所占的字节相同,一个字符占一个字节。

2.2、合并字符串函数CONCAT(s1, s2,…)和CONCAT_WS(x,s1,s2,…)

CONCAT(sI,s2,...)返回结果为连接参数产生的字符串。如果有任何一个参数为NULL,则返回值为NULL:如果所有参数均为非二进制字符串,则结果为非二进制字符串;如果自变量中含有任何一个二进制字符串,则结果为一个二进制字符串。

SELECT CONCAT('PostgreSQL', '9.15'), CONCAT('Postgre', NULL, 'SQL');

在这里插入图片描述

CONCAT WS(x,sl,s2,...),其中,CONCAT WS代表CONCAT With Separator,是CONCATO的特殊形式。第一个参数x是其他参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值。

SELECT CONCAT_WS('-', '1st', '2nd', '3rd'), CONCAT_WS('*', '1st', NULL, '3rd');

在这里插入图片描述

2.3、获取指定长度的字符串函数LEFT(s,n)和RIGHT(s,n)

LEFT(s,n)返回字符串s开始的最左边n个字符。

SELECT LEFT('football', 5);

在这里插入图片描述

RIGHT(s,n)返回字符串s最右边n个字符。

SELECT RIGHT('football', 4);

在这里插入图片描述

2.4、填充字符串函数LPAD(s1,len,s2)和RPAD(s1,len,s2)

LPAD(sl,len,s2)返回字符串sl,其左边由字符串s2填充,填充至len字符长度。假如sl的长度大于len,则返回值被缩短至len字符。

SELECT LPAD('hello', 4, '?'), LPAD('hello', 10, '?');

在这里插入图片描述

RPAD(sl,len,s2)返回字符串sl,其右边被字符串s2填充至len字符长度。假如sl的长度大于len,则返回值被缩短到与len字符相同长度。

SELECT RPAD('hello', 4, '?'), RPAD('hello', 10, '?');

在这里插入图片描述

2.5、删除空格函数LTRIM(s)、RTRIM(s)和TRIM(s)

LTRIM(s)返回字符串s,字符串左侧空格字符被删除。

SELECT '( book )', CONCAT('(', LTRIM(' book '), ')');

在这里插入图片描述

RTRIM(s)返回字符串s,字符串右侧空格字符被删除.

SELECT '( book )', CONCAT('(', RTRIM(' book '), ')');

在这里插入图片描述

TRIM(s)刑除字符串s两侧的空格。

SELECT '( book )', CONCAT('(', TRIM(' book '), ')');

在这里插入图片描述

3.6、删除指定字符串函数TRIM(s1 FROM s)

TRIM(s1 FROM s)删除字符串s中两端所有的子字符串s1。s1为可选项,在未指定情况下,别除空格。

SELECT TRIM('xy' FROM 'xyboxyokxyxy');

在这里插入图片描述

3.7、重复生成字符串函数REPEAT(s,n)

REPEAT(s,n)返回一个由重复的字符串s组成的字符串,n表示重复生成的次数。若n<=0,则返回一个空字符串。若s或n为NULL,则返回NULL。

SELECT REPEAT('PostgreSQL', 3);

在这里插入图片描述

3.8、替换函数REPLACE(s, s1, s2)

REPLACE(s,s1,s2)使用字符串s2替代字符串s中所有的字符串s1。

SELECT REPLACE('xxx.PostgreSQL.com', 'x', 'w');

在这里插入图片描述

3.9、获取子串函数SUBSTRING(s,n,len)

SUBSTRING(s,n,len)表示从字符串s返回一个长度为len的子字符串,起始于位置n。也可能对n使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符。

SELECT SUBSTRING('breakfast', 5) AS col1,SUBSTRING('breakfast', 5, 3) AS col2,SUBSTRING('luch', -3) AS col3;

在这里插入图片描述

2.10、匹配子串开始位置函数POSITION(str1 IN str)

POSITION(strl IN str)函数的作用是返回子字符串strl在字符串str中的开始位置。

SELECT POSITION('ball' IN 'football');

在这里插入图片描述

2.11、字符串逆序函数REVERSE(s)

REVERSE(s)将字符串s反转,返回的字符串的顺序和s字符顺序相反。

SELECT REVERSE('abc');

在这里插入图片描述

三、日期和时间函数

3.1、获取当前日期函数CURRENT_DATE和获取当前时间函数CURRENT_TIME、LOCALTIME

CURRENT_DATE函数的作用是将当前日期按照YYYY-MM-DD’格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

SELECT CURRENT_DATE;

在这里插入图片描述

CURRENT_TIME函数的作用是将当前时间以HH:MM:SS’的格式返回,具体格式根据函数用在字符串或是数字语境中而定。

SELECT CURRENT_TIME;

在这里插入图片描述

LOCALTIME函数的作用是将当前时间以’HH:MM:SS’的格式返回,唯一和CURRENT_TIME函数不同的是,返回的是不带时区的值。

SELECT LOCALTIME;

在这里插入图片描述

3.2、获取当前日期和时间的函数

CURRENT_TIMESTAMPLOCALTIMESTAMPNOW()3个函数的作用相同,即返回当前日期和时间值,格式为YYYY-MM-DDHH:MM:SS或YYYYMMDDHHMMSS,具体格式根据函数是否用在字符串或数字语境而定。

SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP, NOW();

在这里插入图片描述

可以看到,3个函数返回的日期和时间是相同的。唯一不同的是,LOCALTIMESTAMP函数的返回值不带时区。

3.3、获取日期指定值函数EXTRACT(type FROM d)

EXTRACT(ype FROM date)函数从日期中提取其部分,而不是执行日期运算。

SELECT EXTRACT(DAY FROM TIMESTAMP '2012-09-10 10:18:40'),EXTRACT(MONTH FROM TIMESTAMP '2012-09-10 10:18:40'),EXTRACT(YEAR FROM TIMESTAMP '2012-09-10 10:18:40');

在这里插入图片描述

-- 使用EXTRACT函数查询指定日期是一年中的第几天
SELECT EXTRACT(DOY FROM TIMESTAMP '2012-09-10 10:18:40');

在这里插入图片描述

-- 使用EXTRACT函数查询指定日期是一周中的星期几
SELECT EXTRACT(DOW FROM TIMESTAMP '2012-09-10 10:18:40');

在这里插入图片描述

-- 使用EXTRACT函数查询指定日期是该年的第几季度(1~4)
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2012-09-10 10:18:40');

在这里插入图片描述

3.4、日期和时间运算操作

-- 计算指定日期加上间隔天数后的结果
SELECT DATE '2012-09-28' + integer '10';

在这里插入图片描述

-- 计算指定日期加上间隔小时后的结果
SELECT DATE '2012-09-28' + interval '3 hour';

在这里插入图片描述

-- 计算指定日期加上指定时间后的结果
SELECT DATE '2012-09-28' + time '06:00';

在这里插入图片描述

-- 计算指定日期和时间加上间隔时间后的结果
SELECT TIMESTAMP '2012-09-28 02:00:00' + interval '10 hours';

在这里插入图片描述

-- 计算指定日期之间的间隔天数
SELECT DATE '2012-11-01' - DATE '2012-09-10';

在这里插入图片描述

-- 计算指定日期减去间隔天数后的结果
SELECT DATE '2012-11-01' - INTEGER '10';

在这里插入图片描述

-- 计算整数与天数相乘的结果
SELECT 15 * interval '2 day';

在这里插入图片描述

-- 计算整数与秒数相乘的结果
SELECT 50 * interval '2 second';

在这里插入图片描述

-- 计算小时数与整数相除的结果
SELECT interval '1 hour' / integer '2';

在这里插入图片描述

四、条件判断函数

4.1、CASE value WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE m] END

该函数表示,如果value值等于某个vn,则返回对应位置THEN后面的结果:如果与所有值都不相等,则返回ELSE后面的m。

SELECT CASE 2 WHEN 1 THEN 'one'WHEN 2 THEN 'two'ELSE 'more' END;

在这里插入图片描述

4.2、CASE WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END

该函数表示,某个vn值为TRUE时,返回对应位置THEN后面的结果:如果所有值都不为TRUE,则返回ELSE后的m。

SELECT CASE WHEN 1 < 0 THEN 'true'ELSE 'false' END;

在这里插入图片描述

五、系统信息函数

5.1、获取PostgreSQL版本号VERSION()

VERSIONO返回指示PostgreSQL服务器版本的字符串。这个字符串使用utf8字符集。

SELECT VERSION();

在这里插入图片描述

5.2、获取用户名函数USER和CURRENT_USER

USER和CURRENT_USER函数返回当前被PostgreSQL服务器验证的用户名。这个值符合有定当前登录用户存取权限的PostgreSQL账户。一般情况下,这两个函数的返回值是相同的。

SELECT USER, CURRENT_USER;

在这里插入图片描述

六、加密函数

6.1、加密函数MD5(str)

MD5(st)为字符串算出一个MD5128比特检查和。该值以32位十六进制数字的二进制字符串的形式返回,若参数为NULL则会返回NULL。

SELECT MD5('mypwd');

在这里插入图片描述

6.2、加密函数ENCODE(str, pswd_str)

ENCODE(str,pswd_str)使用pswd_str作为加密编码,来加密str。常见的加密编码包括:base64、hex和escape.

SELECT ENCODE('secret', 'hex'), LENGTH(ENCODE('secret', 'hex'));

在这里插入图片描述

6.3、解密函数DECODE(crypt_str, pswd_str)

DECODE(crypt_str,pswd_str)使用pswd_str作为密码,解密加密字符串crypt_str,cypt_str是由ENCODEO返回的字符串。

SELECT DECODE(ENCODE('secret', 'hex'), 'hex');

七、改变数据类型函数CAST(x AS type)

CAST(x,AS type)函数将一个类型的值转换为另一个类型的值。

SELECT CAST(100 AS CHAR(2));

在这里插入图片描述

可以看到,CAST(100 AS CHAR(2)将整数数据100转换为带有2个显示宽度的字符串类型,结果为10。

http://www.lryc.cn/news/611144.html

相关文章:

  • 【语音技术】什么是VAD
  • Windows 电脑远程访问,ZeroTier 实现内网穿透完整指南(含原理讲解)
  • NLP自然语言处理 03 Transformer架构
  • 人工智能-python-Sklearn 数据加载与处理实战
  • ChatGPT以及ChatGPT强化学习步骤
  • MLIR Bufferization
  • Linux驱动学习(八)设备树
  • 《手撕设计模式》系列导学目录
  • 防火墙安全策略练习
  • Dot1x认证原理详解
  • LeetCode 面试经典 150_数组/字符串_H 指数(9_274_C++_中等)(排序后再进行判断)(计数)
  • 三坐标测量技术解析:从基础原理到斜孔测量难点突破
  • 智慧城市SaaS平台|市容环卫管理系统
  • 微服务—OpenFeign
  • 基于PD控制器的四旋翼无人机群飞行控制系统simulink建模与仿真
  • Crawl4AI:开源的AI友好型网页爬虫与数据抓取工具
  • MyBatis实现SQL
  • DM8日常运维命令总结(四)
  • jenkins插件Active Choices的使用通过参数动态控制多选参数的选项
  • 聚焦智能穿戴“下一代消费终端”之争,Meta/微美全息借AI+AR积淀定义行业未来
  • Swift 实战:用队列巧解 LeetCode 346 数据流中的移动平均数
  • 【RabbitMQ】高级特性—持久性、重试机制详解
  • 栈的输入与输出方式
  • 《算法导论》第 4 章 - 分治策略
  • Python Day23程序、进程、线程及多线程实现全解析 例题分析
  • 星图云开发者平台赋能商储油安全管控数字化转型
  • 为什么要选择时序数据库IoTDB?
  • Python爬虫08_Requests聚焦批量爬取图片
  • Pandas 入门:数据分析的得力工具
  • 嵌入式硬件中运放内部底层分析