问题是这样的,我要对userdz这张表的dzxxchuan字段进行清洗:
清洗的规则为:dzxxchuan字段为空的话,就要对查寻qm,lu,hao,pian,dm字段,qm没有的话,看看lu有没有,lu没有的话,看看hao有
没有,hao没有的话,看看pian有没有,pian有的话,看看dm有没有,dm没有的话的就dzxxchuan的字段为‘不详’,前面只要有一个字段qm,
lu,hao,pian,dm不为空,就取值,且所有的字段要进行拼接的。举个例子,比如用户的dzxxchuan为空的话,查看qm,lu,hao,pian,dm,
比如qm是广州,lu是天河路,hao,pian,dm字段都为空的话。dzxxchuanziduan就拼接成‘广州天河路’了,可能存在有qm,没有lu的,
但有hao的,比如号是88号,那么dzxxchuan就拼接成‘广州88号’啦。dzxxchuan字段为空时,dzxxchuan字段都是拼接出来的。dzxxchuan
为空的,都要都要用查询出 qm,lu,hao,pian,dm字段拼接出来,置dzxxchuan的状态。我感觉好像用一句更新语句好像写不了,看看各位
朋友以前做个类似工作的,提供个方法最好具体操作办法,我的想法是,先把dzxxchuan字段为空的,且qm,lu,hao,pian,dm字段为空的
先置为‘不详’。
update userdz set dzxxchuan='不详' where(dzxxchuan is null and qm is null and lu is null and hao is null and pian is null and dm is null);
剩下的思路还不是很明确,请各位朋友帮帮,我刚从事此工作,经验不足!
清洗的规则为:dzxxchuan字段为空的话,就要对查寻qm,lu,hao,pian,dm字段,qm没有的话,看看lu有没有,lu没有的话,看看hao有
没有,hao没有的话,看看pian有没有,pian有的话,看看dm有没有,dm没有的话的就dzxxchuan的字段为‘不详’,前面只要有一个字段qm,
lu,hao,pian,dm不为空,就取值,且所有的字段要进行拼接的。举个例子,比如用户的dzxxchuan为空的话,查看qm,lu,hao,pian,dm,
比如qm是广州,lu是天河路,hao,pian,dm字段都为空的话。dzxxchuanziduan就拼接成‘广州天河路’了,可能存在有qm,没有lu的,
但有hao的,比如号是88号,那么dzxxchuan就拼接成‘广州88号’啦。dzxxchuan字段为空时,dzxxchuan字段都是拼接出来的。dzxxchuan
为空的,都要都要用查询出 qm,lu,hao,pian,dm字段拼接出来,置dzxxchuan的状态。我感觉好像用一句更新语句好像写不了,看看各位
朋友以前做个类似工作的,提供个方法最好具体操作办法,我的想法是,先把dzxxchuan字段为空的,且qm,lu,hao,pian,dm字段为空的
先置为‘不详’。
update userdz set dzxxchuan='不详' where(dzxxchuan is null and qm is null and lu is null and hao is null and pian is null and dm is null);
剩下的思路还不是很明确,请各位朋友帮帮,我刚从事此工作,经验不足!
set dzxxchuan=COALESCE(qm,lu,hao,pian,dm,'不详')
WHERE dzxxchuan IS NULL;
col1 VARCHAR2(1),
col2 VARCHAR2(1),
col3 VARCHAR2(1));INSERT INTO test VALUES (NULL, 'B', 'C');
INSERT INTO test VALUES ('A', NULL, 'C');
INSERT INTO test VALUES (NULL, NULL, 'C');
INSERT INTO test VALUES ('A', 'B', 'C');SELECT COALESCE(col1, col2, col3) FROM test;C
-
B
A
C
A
set dzxxchuan=COALESCE(qm,lu,hao,pian,dm,'不详')
WHERE dzxxchuan IS NULL;
这样只能返回‘广州’啊
CREATE TABLE test (
col1 VARCHAR2(1),
col2 VARCHAR2(1),
col3 VARCHAR2(1));INSERT INTO test VALUES (NULL, 'B', 'C');
INSERT INTO test VALUES ('A', NULL, 'C');
INSERT INTO test VALUES (NULL, NULL, 'C');
INSERT INTO test VALUES ('A', 'B', 'C');我需要的结果是
C
-
BC
AC
C
ABC这样的结果,你帮忙看看啊
set dzxxchuan=COALESCE(qm,lu,hao,pian,dm,'不详')
WHERE dzxxchuan IS NULL;
这样只能返回‘广州’啊,比如
CREATE TABLE test (
col1 VARCHAR2(1),
col2 VARCHAR2(1),
col3 VARCHAR2(1));INSERT INTO test VALUES (NULL, 'B', 'C');
INSERT INTO test VALUES ('A', NULL, 'C');
INSERT INTO test VALUES (NULL, NULL, 'C');
INSERT INTO test VALUES ('A', 'B', 'C');我需要的结果是
C
-
BC
AC
C
ABC
我是要是把在dzxxchuan字段为空的情况下,把lu,hao,pian,dm的所有非空的行拼接更新到dzxxchuan中
第一步:合并qm,lu,hao,pian,dm不为空的字段并赋值给dzxxchuan,如果qm,lu,hao,pian,dm都为空那么dzxxchuan=COALESCE(qm,lu,hao,pian,dm)得到的值仍为空.
update userdz
set dzxxchuan=COALESCE(qm,lu,hao,pian,dm)
WHERE dzxxchuan IS NULL;
第二步:把执行完第一步后dzxxchuan仍为空的字段赋值为'不详'
update userdz
set dzxxchuan='不详'
WHERE dzxxchuan IS NULL;
分两步做:
第一步:合并qm,lu,hao,pian,dm不为空的字段并赋值给dzxxchuan,如果qm,lu,hao,pian,dm都为空那么dzxxchuan=COALESCE(qm,lu,hao,pian,dm)得到的值仍为空.
update userdz
set dzxxchuan=qm || lu || hao || pian || dm
WHERE dzxxchuan IS NULL and COALESCE(qm,lu,hao,pian,dm) is not null;
第二步:把执行完第一步后dzxxchuan仍为空的字段赋值为'不详'
update userdz
set dzxxchuan='不详'
WHERE dzxxchuan IS NULL;