首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL:如何在字符串中检查另一个表中的多个值

SQL:如何在字符串中检查另一个表中的多个值
EN

Stack Overflow用户
提问于 2017-02-17 06:15:27
回答 1查看 75关注 0票数 0

我试图解析一个字符串,看看来自另一个表的值是否出现在其中的任何位置。

代码语言:javascript
运行
复制
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') c

CLASS_B_C_AIRPORTS表将有一个机场代码(KDCA),以及它是'B‘还是'C’。

在下面的示例中,路由字段将包含文本字符串,如下所示:

代码语言:javascript
运行
复制
KDCA..FLUKY.DCA246.PAUKI..MOL.FLCON6.KRIC/0127 

对于这个字符串,我想返回以下内容,因为KDCA是B级机场,而KRIC是C级机场:

代码语言:javascript
运行
复制
| ROUTE                                          | CLASS_B | CLASS_C |
----------------------------------------------------------------------
| KDCA..FLUKY.DCA246.PAUKI..MOL.FLCON6.KRIC/0127 | 1       | 1       |

此查询当前针对此字符串返回B类和C类的0。

EN

回答 1

Stack Overflow用户

发布于 2017-02-17 06:21:40

我想这就是你想要的:

代码语言:javascript
运行
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42285697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档