我试图解析一个字符串,看看来自另一个表的值是否出现在其中的任何位置。
select ROUTE,
case when ROUTE like '%' || b.AIRPORTCODE || '%' then 1 
else 0 end as CLASS_B,
case when ROUTE like '%' || c.AIRPORTCODE || '%' then 1 
else 0 end as CLASS_C
from FLIGHT_MESSAGE, 
(select * from CLASS_B_C_AIRPORTS where CLASS_B_C = 'B') b,
(select * from CLASS_B_C_AIRPORTS where CLASS_B_C = 'C') cCLASS_B_C_AIRPORTS表将有一个机场代码(KDCA),以及它是'B‘还是'C’。
在下面的示例中,路由字段将包含文本字符串,如下所示:
KDCA..FLUKY.DCA246.PAUKI..MOL.FLCON6.KRIC/0127 对于这个字符串,我想返回以下内容,因为KDCA是B级机场,而KRIC是C级机场:
| ROUTE                                          | CLASS_B | CLASS_C |
----------------------------------------------------------------------
| KDCA..FLUKY.DCA246.PAUKI..MOL.FLCON6.KRIC/0127 | 1       | 1       |此查询当前针对此字符串返回B类和C类的0。
发布于 2017-02-17 06:21:40
我想这就是你想要的:
SELECT ROUTE,
       MAX(CASE WHEN CLASS_B_C = 'B' THEN 1 ELSE 0 END) as CLASS_B,
       MAX(CASE WHEN CLASS_B_C = 'C' THEN 1 ELSE 0 END) as CLASS_C
FROM FLIGHT_MESSAGE fm JOIN 
     CLASS_B_C_AIRPORTS a
     ON fm.ROUTE LIKE '%' || a.AIRPORTCODE || '%'
GROUP BY ROUTE;https://stackoverflow.com/questions/42285697
复制相似问题