一·COALESCE(col,value)
coalesce函数是空值替换函数,当某列为空时,用value值替换返回
eg:coalesce('col',0),当col为空时返回0;
二·regexp_split_to_table(value,',')
regexp_split_to_table()函数是利用正则表达式将字符串分割为表格,对指定值进行分割
SELECT
REGEXP_SPLIT_TO_TABLE( '1,2,3,4,5,6', ',' ) AS num,
REGEXP_SPLIT_TO_TABLE( '1。2。3。4。5。6', '。' ) AS test
其中分割字符需要是正则表达式中支持的字符才能分割,当使用|时会出现分割错误的情况,需要使用转移字符来解决
SELECT
REGEXP_SPLIT_TO_TABLE('1|2|3|4|5|6', E'\\|') AS test;
三·REGEXP_SPLIT_TO_ARRAY(value,',')
REGEXP_SPLIT_TO_ARRAY()函数是将数据按字符分割后转换为数组形式
四· SUBSTRING(value from n1 for n2)
SUBSTRING()有三个参数,第一个是字符串,第二个是从哪里开始,第三个是截取几位
五·获取当前时间是星期几
SELECT extract(dow FROM cast(now() as TIMESTAMP))
六·WITH RECURSIVE递归函数
计算1到500的累加的结果。
WITH RECURSIVE t(n) AS (
VALUES (1)
UNION ALL
SELECT n+1 FROM t WHERE n < 50
)
SELECT sum(n) FROM t;
#累乘到15
with recursive d(n, fact) as (
values (1,2)
union all
select n+2, (n+1)*fact from d where n < 15)
SELECT * from d;
七·cast()函数
转换类型:将string转换为integer
select cast('1234' as INTEGER) as num
八·序列
PostgreSQL中的序列可以当作MySQL中的auto_increment来使用,但是序列并不是仅仅用于自增列
添加自增序列
CREATE SEQUENCE 表名_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
设置表某个字段自增
alter table表名 alter column id set default nextval('表名_id_seq');
从当前最大id依次递增
select setval('表名_id_seq',(select max(id) from 同一个表名));
大写字符的表需要加双引号。例如:
select setval('"表名_id_seq"',(select max(id) from "表名"));
九·Oracle数据库查看所有表名以及数据量
SELECT table_name, num_rowsFROM all_tablesWHERE owner = '这里写数据库用户名';
十·达梦数据库
设置字段为主键
alter table "MY_TABLE" add primary key("ID");
修改字段类型
alter table KF.BASE_CASE modify(CASE_NAME text )