1.雪花模型和星型模型
雪花模型 相对于星型模型 去冗余度高,但是在性能方面比较低一些;
星型模型 相对于雪花模型 去冗余度低, 但是在性能方面比较高一些
2.CASE WHEN 语法结构
CASE WHEN (条件一) THEN (结果一)
WHEN (条件二) THEN (结果二)
。。。。
ESLE (其他结果 )END
3.DECODE 语法结构
DECODE((被筛选的信息) ,(条件一),(结果一),(条件二),(结果二),(其他条件))
4.ROUND 语法
ROUND((被精确的数值),(精确的位数))
正数N为精确到小数点后N位
负数N位精确到小数点前-N位
5.SUBSTR函数和INSTR函数
一般在截取ORACLE中某字符串某特定位置的字符的时候,需要SUBSTR函数和INSTR函数连用
例如:SUBSTR((截取的字符串),INSTR((截取的字符串),(要找到所在位置的字符串),(起始位置),(第几次出现)))
举例为:
SELECT --空
CASE WHEN TYPE ='支付宝' AND INSTR(CARD,'支付宝:',1,2)=0 AND INSTR(CARD,'红包:',1,1)=0 THEN '0'
--只有支付宝金额
WHEN TYPE ='支付宝' AND INSTR(CARD,'支付宝:',1,2)=0 AND INSTR(CARD,'红包:',1,1)>0 THEN SUBSTR(CARD,INSTR(CARD,'红包:',1,1)+3)
--支付宝红包在前
WHEN INSTR(CARD,'支付宝:',1,2)=0 AND INSTR(CARD,'支付宝:',1,1)>INSTR(CARD,'红包',1,1) THEN SUBSTR(CARD,INSTR(CARD,'红包:',1,1)+3,
INSTR(CARD,'支付宝:',1,1)-INSTR(CARD,'红包:',1,1)-4)
--支付宝红包在后
WHEN INSTR(CARD,'支付宝:',1,2)=0 AND INSTR(CARD,'支付宝:',1,1)<INSTR(CARD,'红包',1,1) THEN SUBSTR(CARD,INSTR(CARD,'红包:',1,1)+3,
INSTR(CARD,'红包:',1,1)+3)
--三个 支付红包在前
WHEN INSTR(CARD,'支付宝:',1,2)>0 AND INSTR(CARD,'支付宝:',1,1)>INSTR(CARD,'红包',1,1) THEN SUBSTR(CARD,INSTR(CARD,'红包:',1,1)+3,INSTR(CARD,'支付宝:',1,1)-INSTR(CARD,'红包:',1,1)-4)
--三个,支付红包中间
WHEN INSTR(CARD,'支付宝:',1,2)>0 AND INSTR(CARD,'支付宝:',1,1)<INSTR(CARD,'红包',1,1) THEN SUBSTR(CARD,INSTR(CARD,'红包:',1,1)+3,INSTR(CARD,'支付宝:',1,2)-INSTR(CARD,'红包:',1,1)-4)
ELSE '0'
END FROM TEST