工作遇到一个场景是,给表导入数据,其中字段 filed1 与 field2 的赋值比较复杂:
- 如果 field1 满足条件等于C11,则 field1 赋值为 V11 且 field2 赋值为 V21;
- 表数据的 field2 内容正则替换为 V22;
- 如果field1 满足条件等于 V11,则 field1 赋值为 V12 且 field2 赋值为 V23。
流程图如下:
hql语句可写为:
select
if(if(field1=C11, V11, field1)=V11, V12, V23) as field1,
if(field1=V11, V23(V22(if(field1=C11, V21, field2))),V22(if(field1=C11, V21, field2))) as field2
from tableA;
梳理后就发现刚刚写的是:
if(field1=V11, V23(V22(if(field1=C11, V21, field2))),field2 ) as field2
--而不是
if(field1=V11, V23(V22(if(field1=C11, V21, field2))),V22(if(field1=C11, V21, field2))) as field2
再一次体会到梳理的益处!!