sql - 我想将一条记录与 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 应该只被提取。你能请任何人帮我解决这个问题吗
解决方案
一种方法是正则表达式:
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
.
推荐阅读
- django - 如何使用 Django REST api 从数据库中正确检索对象?
- haskell - 每个替代 Monad 都是可过滤的吗?
- python-3.x - 重叠时两个小部件的 Tkinter 内容可见
- php - Laravel 7 旧邮件输入问题
- css - 文字居中
- macos - 如何配置 Travis CI 以便 `xcrun` 可以找到 `altool`(Mac OS X 10.14 上的 xcode 11.3)?
- c# - IIS ASP.NET Core 应用程序未启动
- javascript - 使用 Javascript 使 Anchor 标记有条件地工作
- json - 如何使用 linq 获得单个响应
- c - C - 为什么 sscanf(buffer, “%*s %d %s %s%c”, &key, succ_ip, succ_gate, &eol) == 4?