文章目录
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));