Sql 匹配具有不同表的列名的管道分隔字符串,列名匹配后将其更新为';好';
例如,字符串(表T中有行星名称的列)=‘太阳|地球|火星’; 表(T)列标题为行星、太阳、金星和火星 由于Mars在两者中都很常见,因此应将Mars的值更新为表T中的Y 表T有这样50多列,我必须提取并匹配这些列,然后更新为YSql 匹配具有不同表的列名的管道分隔字符串,列名匹配后将其更新为';好';,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,例如,字符串(表T中有行星名称的列)=‘太阳|地球|火星’; 表(T)列标题为行星、太阳、金星和火星 由于Mars在两者中都很常见,因此应将Mars的值更新为表T中的Y 表T有这样50多列,我必须提取并匹配这些列,然后更新为Y | pluto | Sun | Earth | Mars | Planets | |-------|---------|-----------|---------| --------------------- | |
| 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, null, null, 'Sun|Earth|Mars');
1 row created.
SQL> insert into T (Pluto, Sun, Earth, Mars, Planets) values (null, null, null, null, 'Pluto|Earth');
1 row created.
SQL> insert into T (Pluto, Sun, Earth, Mars, Planets) values (null, null, null, null, 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.
作为文本表的示例数据和所需结果将有助于解决这个问题。但Planet是一个以管道分隔的字符串,使用您的示例数据,这将完全按照您发布的方式更新列。如果这不是您需要的,请发布不同的示例数据,并尝试更好地解释后面的逻辑。您的答案确实值得称赞,但我是为excel生成而做的。因此,挑战在于打破分隔列,分隔列中的值应与具有相同名称的列匹配。请发布一个示例,说明您需要执行的操作。如果需要更新表格,请显示更新前后的数据;如果需要选择,请发布表格内容和所需结果。就目前而言,很难理解你需要什么我用了同样的东西,但它每次都在更新冥王星,不知道为什么