前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >进阶数据库系列(七):PostgreSQL 常用函数介绍

进阶数据库系列(七):PostgreSQL 常用函数介绍

作者头像
民工哥
发布2023-08-22 13:45:25
8150
发布2023-08-22 13:45:25
举报
文章被收录于专栏:民工哥技术之路

数学函数

1、绝对值函数ABS(x)和返回圆周率函数PI()

求2,-3.3和-33的绝对值,输入语句如下:

代码语言:javascript
复制
SELECT ABS(2), ABS(-3.3), ABS(-33);

返回圆周率值,输入语句如下:

代码语言:javascript
复制
SELECT pi();
2、平方根函数SQRT(x)和求余函数MOD(x,y)

求9,40和-49的二次平方根,输入语句如下:

代码语言:javascript
复制
SELECT SQRT(9), SQRT(40);

对MOD(31,8),MOD(234, 10),MOD(45.5,6)进行求余运算,输入语句如下:

代码语言:javascript
复制
SELECT MOD(31,8),MOD(234, 10),MOD(45.5,6);
3、获取整数的函数CEIL(x)、CEILING(x)、FLOOR(x)

使用CEIL和CEILING函数返回最小整数,输入语句如下:

代码语言:javascript
复制
SELECT  CEIL(-3.35),CEILING(3.35);

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

使用FLOOR函数返回最大整数,输入语句如下:

代码语言:javascript
复制
SELECT FLOOR(-3.35), FLOOR(3.35);
4、四舍五入函数ROUND(x)和ROUND(x,y)

使用ROUND(x)函数对操作数进行四舍五入操作,输入语句如下:

代码语言:javascript
复制
SELECT ROUND(-1.14),ROUND(-1.67), ROUND(1.14),ROUND(1.66);

使用ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:

代码语言:javascript
复制
SELECT ROUND(1.38, 1), ROUND(1.38, 0), ROUND(232.38, -1), ROUND (232.38,-2);
5、符号函数SIGN(x)

使用SIGN函数返回参数的符号,输入语句如下:

代码语言:javascript
复制
 SELECT SIGN(-21),SIGN(0), SIGN(21);
6、幂运算函数POW(x,y)、POWER(x,y)和EXP(x)

使用POW和POWER函数进行乘方运算,输入语句如下:

代码语言:javascript
复制
 SELECT POW(2,2), POWER(2,2),POW(2,-2), POWER(2,-2);

使用EXP函数计算e的乘方,输入语句如下:

代码语言:javascript
复制
SELECT EXP(3),EXP(-3),EXP(0);
7、对数运算函数LOG(x)

使用LOG(x)函数计算自然对数,输入语句如下:

代码语言:javascript
复制
SELECT LOG(3);
8、角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)

使用RADIANS将角度转换为弧度,输入语句如下:

代码语言:javascript
复制
SELECT RADIANS(90),RADIANS(180);

使用DEGREES将弧度转换为角度,输入语句如下:

代码语言:javascript
复制
SELECT DEGREES(PI()), DEGREES(PI() / 2);
9、正弦函数SIN(x)和反正弦函数ASIN(x)

使用SIN函数计算正弦值,输入语句如下:

代码语言:javascript
复制
SELECT SIN(1), ROUND(SIN(PI()));

使用ASIN函数计算反正弦值,输入语句如下:

代码语言:javascript
复制
SELECT ASIN(0.8414709848078965);
10、余弦函数COS(x)反余弦函数ACOS(x)

使用COS函数计算余弦值,输入语句如下:

代码语言:javascript
复制
SELECT COS(0),COS(PI()),COS(1);

使用ACOS计算反余弦值,输入语句如下:

代码语言:javascript
复制
SELECT ACOS(1),ACOS(0), ROUND(ACOS(0.5403023058681398));
11、正切函数、反正切函数和余切函数

使用TAN函数计算正切值,输入语句如下:

代码语言:javascript
复制
SELECT TAN(0.3), ROUND(TAN(PI()/4));

使用ATAN函数计算反正切值,输入语句如下:

代码语言:javascript
复制
SELECT ATAN(0.30933624960962325), ATAN(1);

使用COT()函数计算正切值,输入语句如下,

代码语言:javascript
复制
SELECT COT(0.3), 1/TAN(0.3),COT(PI() / 4);

字符串函数

1、计算字符数的函数char_length(str)和字符串长度(length)的函数

使用CHAR_LENGTH函数计算字符串字符个数,输入语句如下:

代码语言:javascript
复制
SELECT CHAR_LENGTH('date'), CHAR_LENGTH('egg');

使用LENGTH函数计算字符串长度,输入语句如下:

代码语言:javascript
复制
SELECT LENGTH('date'), LENGTH('egg');
2、合并字符串CONCAT(s1,s2,…),CONCAT_WS(x,s1,s2,…)

使用CONCAT函数连接字符串,输入语句如下:

代码语言:javascript
复制
SELECT CONCAT('PostgreSQL', '9.15'),CONCAT('Postgre',NULL, 'SQL');

使用CONCAT_WS函数连接带分隔符的字符串,输入语句如下:

代码语言:javascript
复制
SELECT CONCAT_WS('-', '1st','2nd', '3rd'), CONCAT_WS('*', '1st', NULL, '3rd');
3、获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)

使用LEFT函数返回字符串中左边的字符,输入语句如下:

代码语言:javascript
复制
SELECT LEFT('football', 5);

使用RIGHT函数返回字符串中右边的字符,输入语句如下:

代码语言:javascript
复制
SELECT RIGHT('football', 4);
4、填充字符串LPAD(s1,len,s2)和RPAD(s1,len,s2)

使用LPAD函数对字符串进行填充操作,输入语句如下:

代码语言:javascript
复制
SELECT LPAD('hello',4,'??'), LPAD('hello',10,'??');

使用LPAD函数对字符串进行填充操作,输入语句如下:

代码语言:javascript
复制
SELECT RPAD('hello',4,'?'), RPAD('hello',10,'?');
5、删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)

使用LTRIM函数删除字符串左边的空格,输入语句如下:

代码语言:javascript
复制
SELECT '(  book  )',CONCAT('(',LTRIM('  book  '),')');

使用LTRIM函数删除字符串右边的空格,输入语句如下:

代码语言:javascript
复制
SELECT '(  book  )',CONCAT('(', RTRIM ('  book  '),')');

使用TRIM函数删除指定字符串两端的空格,输入语句如下:

代码语言:javascript
复制
SELECT '(  book  )',CONCAT('(', TRIM('  book  '),')');
6、删除指定字符串的函数TRIM(s2 from s)

使用TRIM(s1 FROM s)函数删除字符串中两端指定的字符,输入语句如下:

代码语言:javascript
复制
SELECT TRIM('xy' FROM 'xyboxyokxyxy') ;
7、重复生成字符串的函数REPEAT(s,n)

使用REPEAT函数重复生成相同的字符串,输入语句如下:

代码语言:javascript
复制
SELECT REPEAT('PostgreSQL', 3);
8、替换函数REPLATE(s,s1,s2)

使用REPLACE函数进行字符串替代操作,输入语句如下:

代码语言:javascript
复制
SELECT REPLACE('xxx.PostgreSQL.com', 'x', 'w');
9、获取指定子串的函数SUBSTRING(s,n,len)

使用SUBSTRING函数获取指定位置处的子字符串,输入语句如下:

代码语言:javascript
复制
SELECT SUBSTRING('breakfast',5) AS col1, 
SUBSTRING('breakfast',5,3) AS col2,
 SUBSTRING('lunch', -3) AS col3,
10、匹配子串开始位置的函数POSITION(str1 in str)

使用POSITION函数查找字符串中指定子字符串的开始位置,输入语句如下:

代码语言:javascript
复制
SELECT POSITION('ball' IN 'football');
11、字符串逆序的函数REVERSE(s)

使用REVERSE函数反转字符串,输入语句如下:

代码语言:javascript
复制
SELECT REVERSE('abc');

日期和时间函数

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

使用日期函数获取系统当期日期,输入语句如下:

代码语言:javascript
复制
SELECT CURRENT_DATE;

使用时间函数获取系统当期日期(返回时带时区),输入语句如下:

代码语言:javascript
复制
SELECT CURRENT_TIME;

使用时间函数获取系统当期日期(返回时不带时区),输入语句如下:

代码语言:javascript
复制
SELECT LOCALTIME;
2、返回当前日期和时间的函数

使用日期时间函数获取当前系统日期和时间,输入语句如下:

代码语言:javascript
复制
SELECT CURRENT_TIMESTAMP,LOCALTIMESTAMP,NOW();
3、获取指定值的日期

使用EXTRACT函数从月份中提取日期,输入语句如下:

代码语言:javascript
复制
SELECT EXTRACT(DAY FROM TIMESTAMP '2012-09-10 10:18:40');

使用EXTRACT函数从月份中提取月份,输入语句如下:

代码语言:javascript
复制
SELECT EXTRACT(MONTH FROM TIMESTAMP '2012-09-10 10:18:40');

使用EXTRACT函数从月份中提取年份,输入语句如下:

代码语言:javascript
复制
SELECT EXTRACT(YEAR FROM TIMESTAMP '2012-09-10 10:18:40');

使用EXTRACT函数查询指定日期是一年中的第几天,输入语句如下:

代码语言:javascript
复制
SELECT EXTRACT(DOY FROM TIMESTAMP '2012-09-10 10:18:40');

使用EXTRACT函数查询指定日期是一周中的星期几,输入语句如下:

代码语言:javascript
复制
SELECT EXTRACT(DOW FROM TIMESTAMP '2012-09-10 10:18:40');

使用EXTRACT函数查询指定日期是该年的第几季度(1-4),输入语句如下:

代码语言:javascript
复制
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2012-09-10 10:18:40');
4、日期和时间的运算操作

计算指定日期加上间隔天数后的结果,输入语句如下:

代码语言:javascript
复制
SELECT DATE '2019-09-28' + integer '10';

计算指定日期加上间隔小时后的结果,输入语句如下:

代码语言:javascript
复制
SELECT DATE '2012-09-28' + interval '3 hour';

计算指定日期加上指定时间后的结果,输入语句如下:

代码语言:javascript
复制
SELECT DATE '2012-09-28' + time '06:00';

计算指定日期和时间加上间隔时间后的结果,输入语句如下:

代码语言:javascript
复制
SELECT TIMESTAMP '2012-09-28 02:00:00' + interval '10 hours';

计算指定日期之间的间隔天数,输入语句如下:

代码语言:javascript
复制
SELECT date '2012-11-01' - date '2012-09-10';

计算指定日期减去间隔天数后的结果,输入语句如下:

代码语言:javascript
复制
SELECT DATE '2012-09-28' - integer '10';

计算整数与天数相乘的结果,输入语句如下:

代码语言:javascript
复制
SELECT 15 * interval '2 day';

计算整数与秒数相乘的结果,输入语句如下:

代码语言:javascript
复制
SELECT 50 * interval '2 second';

计算小时数与整数相乘的结果,输入语句如下:

代码语言:javascript
复制
SELECT interval '1 hour' / integer  '2';

条件判断函数

1、CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2][ELSE rn] END;

意思是如果expr的值等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不相等,则返回ELSE后面的rn。

使用CASE value WHEN语句执行分支操作,输入语句如下:

代码语言:javascript
复制
SELECT CASE 2 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;
2、CASE WHEN v1 THEN r1 [WHEN v2 THEN r2][ELSE rn] END;

使用CASE WHEN语句执行分支操作,输入语句如下:

代码语言:javascript
复制
SELECT CASE WHEN 1<0 THEN 'true' ELSE 'false' END;

系统信息函数

1、获取PostgreSQL版本号

查看当前PostgreSQL版本号,输入语句如下:

代码语言:javascript
复制
SELECT VERSION();
2、获取用户名的函数

获取当前登陆用户名称,输入语句如下:

代码语言:javascript
复制
SELECT USER, CURRENT_USER;

加密函数

1、加密函数MD5(str)

使用MD5函数加密字符串,输入语句如下:

代码语言:javascript
复制
SELECT MD5 ('mypwd');
2、加密函数ENCODE(str,pswd_str)

使用ENCODE加密字符串,输入语句如下:

代码语言:javascript
复制
SELECT ENCODE('secret','hex'), LENGTH(ENCODE('secret','hex'));
3、解密函数DECODE(cypt_str,pswd_str)

使用DECODE函数解密被ENCODE加密的字符串,输入语句如下:

代码语言:javascript
复制
SELECT DECODE(ENCODE('secret','hex'),'hex');

改变数据类型的函数

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

使用CAST函数进行数据类型的转换,将整数类型100转成两位字符串的类型10,SQL语句如下:

代码语言:javascript
复制
SELECT CAST(100 AS CHAR(2));

常见问题及解答

疑问1:如何从日期时间值中获取年、月、日等部分日期或时间值?

在PostgreSQL中,日期和时间是以字符串形式存储在数据表中,可以截取字符串,如dt = ‘2020-03-01 12:30:30’,则可以输入left(dt, 4)截取年份,输入mid(dt, 6, 2)截取月份,其他同理。

疑问2:如何计算年龄?

年龄通过当前年龄减去出生年份来计算的。例如extract(year form m_birth)返回的结果是出生的年份,然后通过extract(year from current_date)获取当前年份,两者相减就是年龄。

参考文章:https://cuiyonghua.blog.csdn.net/article/ details/105854351

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数学函数
    • 1、绝对值函数ABS(x)和返回圆周率函数PI()
      • 2、平方根函数SQRT(x)和求余函数MOD(x,y)
        • 3、获取整数的函数CEIL(x)、CEILING(x)、FLOOR(x)
          • 4、四舍五入函数ROUND(x)和ROUND(x,y)
            • 6、幂运算函数POW(x,y)、POWER(x,y)和EXP(x)
              • 7、对数运算函数LOG(x)
                • 8、角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)
                  • 9、正弦函数SIN(x)和反正弦函数ASIN(x)
                    • 10、余弦函数COS(x)反余弦函数ACOS(x)
                      • 11、正切函数、反正切函数和余切函数
                        • 1、计算字符数的函数char_length(str)和字符串长度(length)的函数
                          • 2、合并字符串CONCAT(s1,s2,…),CONCAT_WS(x,s1,s2,…)
                            • 3、获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)
                              • 4、填充字符串LPAD(s1,len,s2)和RPAD(s1,len,s2)
                                • 5、删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)
                                  • 6、删除指定字符串的函数TRIM(s2 from s)
                                    • 7、重复生成字符串的函数REPEAT(s,n)
                                      • 8、替换函数REPLATE(s,s1,s2)
                                        • 9、获取指定子串的函数SUBSTRING(s,n,len)
                                          • 10、匹配子串开始位置的函数POSITION(str1 in str)
                                            • 11、字符串逆序的函数REVERSE(s)
                                              • 1、获取当前日期的函数和当前时间的函数
                                                • 2、返回当前日期和时间的函数
                                                  • 3、获取指定值的日期
                                                    • 4、日期和时间的运算操作
                                                      • 1、CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2][ELSE rn] END;
                                                        • 2、CASE WHEN v1 THEN r1 [WHEN v2 THEN r2][ELSE rn] END;
                                                        • 系统信息函数
                                                          • 1、获取PostgreSQL版本号
                                                            • 2、获取用户名的函数
                                                            • 加密函数
                                                              • 1、加密函数MD5(str)
                                                                • 2、加密函数ENCODE(str,pswd_str)
                                                                  • 3、解密函数DECODE(cypt_str,pswd_str)
                                                                  • 改变数据类型的函数
                                                                  • 常见问题及解答
                                                                  相关产品与服务
                                                                  数据库
                                                                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                                                  领券
                                                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档