如何解决匹配具有不同表列名的管道分隔字符串,一旦列名匹配,将其更新为“GOOD”
例如。 String(T 表中名称为 Planets 的列) ='Sun|Earth|Mars'; 表 (T) 列标题是行星、太阳、金星、火星。
由于Mars在两者中都是通用的,那么Mars的值应该在表T中更新为Y。
表 T 有 50 多列,我必须提取和匹配然后更新为 Y
| pluto | Sun | Earth | Mars | Planets |
|-------|---------|-----------|---------| --------------------- |
| | Y | Y | Y | Sun|Earth|Mars |
| Y | | Y | | Pluto|Earth |
| | | | | (Blank) |
如果行星列数据与太阳或地球等其他列匹配,则将这些列更新为 Y。
解决方法
如果我理解得很好,您可能需要:
update T
set Pluto = case when planets like '%Pluto%' then 'Y' end,Sun = case when planets like '%Sun%' then 'Y' end,Earth = case when planets like '%Earth%' then 'Y' end,Mars = case when planets like '%Mars%' then 'Y' end
示例:
SQL> create table T (
2 Pluto varchar2(1),3 Sun varchar2(1),4 Earth varchar2(1),5 Mars varchar2(1),6 Planets varchar2(100)
7 );
Table created.
SQL> insert into T (Pluto,Sun,Earth,Mars,Planets) values (null,null,'Sun|Earth|Mars');
1 row created.
SQL> insert into T (Pluto,'Pluto|Earth');
1 row created.
SQL> insert into T (Pluto,null);
1 row created.
SQL> update T
2 set pluto = case when planets like '%Pluto%' then 'Y' end,3 Sun = case when planets like '%Sun%' then 'Y' end,4 Earth = case when planets like '%Earth%' then 'Y' end,5 Mars = case when planets like '%Mars%' then 'Y' end;
3 rows updated.
SQL> select * from T;
PLUTO SUN EARTH MARS PLANETS
---------- ---------- ---------- ---------- --------------------
Y Y Y Sun|Earth|Mars
Y Y Pluto|Earth
3 rows selected.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。