在Oracle数据库中,截取字段table_name中数据,表名为IE_001_101_20270523或者IE_010_1004_20240909,只取表名数据中含有日期部分(YYYYMMDD),且用substr函数截取的位置不一定,请问还用什么函数
时间: 2024-09-09 22:12:34 浏览: 38
Oracle截取字符串去掉字段末尾指定长度的字符
5星 · 资源好评率100%
在Oracle数据库中,如果你想要从`table_name`字段中提取包含日期部分(格式为YYYYMMDD)的数据,并且不确定具体的截取位置,可以结合`INSTR`和`SUBSTRING`函数一起使用。`INSTR`函数用于找到字符串中某个子串第一次出现的位置,然后你可以基于这个位置来截取。这里是示例SQL查询:
```sql
SELECT SUBSTRING(table_name, INSTR(table_name, '_') + LENGTH('_') + 8)
FROM your_table
WHERE table_name LIKE '%_YYYYMMDD%'
AND (table_name = 'IE_001_101_20270523' OR table_name = 'IE_010_1004_20240909');
```
在这个查询中:
- `INSTR(table_name, '_') + LENGTH('_') + 8` 获取的是日期部分开始的位置,`_'` 后面跟着四位数字就是日期。
- `LIKE '%_YYYYMMDD%'` 确保只有包含指定格式日期的部分才会匹配。
- `OR` 条件用于同时筛选两个指定的表名。
阅读全文