sql - Oracle SQL - 不同 ID 格式的 substr 匹配
问题描述
29664 A120091 ------ HR A 120091(城市名称)
90402 A12466 ------ HR A 12466 (CITYNAME)
我需要查询两个字段以查找不同格式的 ID 匹配项。
左侧的第一个字段,ID 以字符串中间的 alha 字符开头,并不总是“A”,但 alpha 加上其右侧的所有内容都是正确的 ID。右边的第二个字段,它是第三个 alpha(同样可以是任何字母),删除该 alpha 之后的第一个空格,加上直到第二个空格的所有数字。如果我在这里的格式正确,则匹配的 ID 以粗体显示。它只是超出了我的子弦印章。任何帮助表示赞赏!
解决方案
使用SUBSTR
:
SELECT *
FROM table_name t
WHERE SUBSTR( value1, 6, 1 ) || ' ' || SUBSTR( value1, 7 )
= SUBSTR( value2, 3, INSTR( value2, ' ', 1, 2 ) - 3 );
或正则表达式:
SELECT *
FROM table_name
WHERE REGEXP_SUBSTR( value1, '[A-Z]\d+$' )
= REGEXP_REPLACE( value2, '^..([A-Z]) (\d+) .*$', '\1\2' )
其中,对于样本数据:
CREATE TABLE table_name ( value1, value2 ) AS
SELECT '29664A120091', 'HRA 120091 (CITYNAME)' FROM DUAL UNION ALL
SELECT '90402A12466', 'HRA 12466 (CITYNAME)' FROM DUAL;
两个输出:
价值1 | 价值2 :----------- | :-------------------- 29664A120091 | HRA 120091(城市名称) 90402A12466 | HRA 12466(城市名称)
db<>在这里摆弄
推荐阅读
- nginx - nginx 代理无法使用子域
- python - Python:嵌套列表理解
- python-3.x - on_fetch_item_resource 不返回任何内容
- python - 如何在python中删除数据框中没有数字的单元格?
- android - 如何在 android 中显示一个按钮的 onclick 登录?
- java - 我们如何将 json 发送到控制器并根据 java 中的键进行迭代?
- c# - 从 Utils 类更改主窗口内容
- graphics - three.js 中的帧率下降/效率问题
- mysql - 无法使用 .NET mysql 连接器连接到 mysql rds 实例
- bash - 无法访问函数内的变量