PostgreSQL学习笔记(四):运算符&函数

1 运算符&函数

1.1 运算符

1.1.1 算数运算符

| ---------------- | ---------- |
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 求余 |

1.1.2 关系运算符

运算符 作用
=
<> (!=)
>
>=
<
<=
LEAST 返回最小值
GREATEST 返回最大值
IN/NOT IN
BETWEEN…AND…
LIKE

1.1.3 逻辑运算符

运算符 作用
NOT
AND
OR

1.2 函数

1.2.1 数学函数

函数 说明
ABS(X) 绝对值
PI(x) 圆周率
SQRT(X) 平方根
MOD(X,Y) 求余
CEIL(X) 不小于X的最小整数
FLOOR(X) 不大于X的最大整数
ROUND(X)/ROUND(X,Y) 四舍五入,如果Y有值,保留Y小数位
POWER(X,Y) X的Y次方

1.2.2 字符串函数

函数 说明
CHAR_LENGTH(STR) 获取字符串长度
LENGTH(STR) 获取字符串字节长度。一个汉字3字节,数字字母1字节
CONCAT(STR1,STR2,…) 连接字符串
CONCAT_WS(WS,STR1,STR2,…) 连接字符串,字符串中间中间用ws的值连接
LEFT(STR,N) 获取str从左数n长度的字符串,n从1开始
RIGHT(STR,N) 获取str从右数n长度的字符串,n从1开始
LPAD(STR,N,PADSTR) 左补白,如果str不满n长度,则在左边补上字符串
RPAD(STR,N,PADSTR) 右补白,如果str不满n长度,则在右边补上字符串
TRIM(STR)/RTRIM(STR)/LTRIM(STR) 去除空白
REPEAT(STR,N) 重复n次形成的字符串
REPLACE(STR,BEFORESTR,AFTERSTR) 替换字符串
SUBSTRING(STR,N,LEN) 从str中第n个位置开始截取len长度的字符串

1.2.3 日期和时间

  • 获取当前时间

    select current_time;--带时区
    select localtime;--不带时区
    
  • 获取当前日期+时间

    select current_timestamp;
    select localtimestamp;
    select now();
    
  • 提取日期中的日子

    select extract(day from timestamp '2018-12-21 12:00:00');
    
  • 提取日期中的月份

    select extract(month from timestamp '2018-12-21 12:00:00');
    
  • 提取日期中的年份

    select extract(year from date '2012-12-12');
    
  • 提取日期是一年中第几天

    select extract(doy from date '2012-12-12');
    
  • 提取日期是一周中的星期几

    select extract(dow from date '2012-12-12');
    
  • 提取日期是第几个季度

    select extract(quarter from date '2012-12-12');
    
  • 计算日期+/-间隔天数

    select date '2012-12-12' + integer '10';
    
  • 计算日期+/-间隔小时

    select date '2012-12-12' + interval '10 hour';
    
  • 计算日期+/-指定时间

    select date '2012-12-12' + time '06:00'
    
  • 计算日期时间+/-间隔时间

    select timestamp '2012-12-12 12:00:01' + interval '10 hours';
    
  • 计算两个日期之间的间隔天数

    select date '2012-12-12' - date '2012-10-12';
    

1.2.4 条件表达式

  • CASE VALUE WHEN V1 THEN R1 [WHEN V2 THEN R2][...][ELSE RN] END

    类似于Oracle的decode函数,如果v1=value,返回r1;如果v2=value,返回r2;否则返回rn。

  • case when v1 then r1 [when v2 then r2][...][else rn] end

    和java的case相同。

1.2.5 系统函数

  • 获取当前登陆用户名

    select user,current_user;
    
  • md5加密

    select md5('hello world');
    
  • encode加密

    select encode('hello world','123456');
    

    123456是加密编码

  • decode解密

    select decode(encode('hello world','123456'),'123456');
    
  • 数据类型转换

    select cast(100 as varchar(12));
    

猜你喜欢

转载自blog.csdn.net/twypx/article/details/86069511