coalesce函数的用法
coalesce函数的参数是列,结果是取出第一个不为空的列的数据。
postgre数据库中某个视图建立时使用: '002'::text || COALESCE(parent_id, ''::character varying)::text AS parent_id
把某棵树的parent_id置为002或者002+数据表.parent_id(字段)
首先,建一个视图:
CREATE OR REPLACE VIEW v AS SELECT NULL AS c1,NULL AS c2,1 AS c3,NULL AS c4,2 AS c5,NULL AS c6 FROM dual UNION ALL SELECT NULL AS c1,NULL AS c2,NULL AS c3,3 AS c4,NULL AS c5,2 AS c6 FROM dual;
查看视图结果:
使用coalesce函数查结果:
SELECT COALESCE (c1,c2,c3,c4,c5,c6) AS c FROM v;
结果竟是:
难道coalesce函数不支持number类型?带着这个疑问,给转换一下,结果:
SELECT COALESCE (c1,c2,to_char(c3),to_char(c4),to_char(c5),to_char(c6)) AS c FROM v;
好像是真的,那么对date类型的支持呢?试一试
CREATE OR REPLACE VIEW v AS
SELECT to_date('20150101','YYYYMMDD') AS c1,NULL AS c2,1 AS c3,NULL AS c4,2 AS c5,NULL AS c6 FROM dual
UNION ALL
SELECT NULL AS c1,NULL AS c2,NULL AS c3,3 AS c4,NULL AS c5,2 AS c6 FROM dual;
结果竟然:
到这里就不禁要想,应该不是不支持某种数据类型,而是把第一列的数据类型,作为整个函数的数据类型了。
这样试试就行了
最后,既然coalesce函数里面是列,那么用*代表所有列行不行呢?
显然是不行的。
飞羽疾驰: 可以的,我看的另一个神仙级Java设计模式实战,它结合SpringBoot,我彻底学会了Java设计模式及应用,见:https://knife.blog.csdn.net/article/details/131900171
LiuLei_2015: git stash show -p stash@{1} 我-p放在后面识别不了。放在前面可以。
qq_41835226: (,)逗号:表达一个列表值,如在星期字段中使用“1,2,4”,则表示星期一,星期二,星期四 这一句有问题
回忆是昨天里的海: 主键不是自己生成的吗,每一条记录按理来说应该都会生成一条主键,如果遇到冲突是要改成更新的吗
秃头兔头不怕秃头: TCP协议主要特点第二点TCP是点对点么,,,我看的是端对端啊?