首页 > 解决方案 > 我想将一条记录与 SQL 中另一个表中的记录子串进行比较

问题描述

我有一个主表,其中记录了具有不同类型但未在同一个表中定义的部件。相反,我们有另一个名为 t_pfx 的表,其中部件类型是根据它们的前缀定义的,提供的 t_pfx 和主表不相关。假设零件 ID 从 E20xxxxxx、E21xxxx ..... 到 E99xxxxxx 是在 t_pfx 中定义的组件。

我写了一个这样的查询

select part_id where status in ('OBS','INACT') order by last_mod_date asc;

但上面的查询将选择所有类型的零件。

我需要比较查询,如果零件 ids 以 E20xxxx 开头,E21xxxx ..... E99xxxxxx 应该只被提取。你能请任何人帮我解决这个问题吗

标签: sqloracle

解决方案


一种方法是正则表达式:

where status in ('OBS', 'INACT') and
      regexp_like(part_id, '^E[2-9][0-9]')

如果你知道第二个和第三个位置总是数字,你也可以这样做:

where status in ('OBS', 'INACT') and
      (part_id >= 'E20' AND
       part_id < 'E9:'
      )

冒号恰好是紧随其后的 Ascii 字符'9'。这种方法的优点是它可以利用包含part_id.


推荐阅读