oracle 时间截取,查询结果截取,替换

本文介绍了Oracle数据库中日期和字符串处理的方法,包括如何使用TRUNC函数截取日期的不同部分,如年、月、日等;如何利用SUBSTR函数截取字符串的特定部分;以及如何运用REPLACE函数来替换字符串中的指定字符。

 oracle 时间截取:

trunc(sysdate)= trunc(sysdate,'dd')--截取掉时分秒,结果是2011-05-11 00:00:00
select trunc(sysdate,'mm') from dual; --截取月份,结果 2011-05-01 00:00:00
select trunc(sysdate,'yy') from dual;-- 截取年份,结果 2011-01-01 00:00:00
--+7 是加7天
--+1/24 是加 1/24 天,即一个小时
--结果意思就是 一周后的凌晨1点整
select trunc(sysdate)+7+1/24 from dual; --可以看到结果

oracle 查询结果截取:

select substr(a.type,4)   from feedback a;--从第四位开始截取

select substr(a.type,1,3)   from feedback a;--从第1位开始截取到第三位

 select substr(a.type,instr(a.type,'[',-1,1)) type  from feedback a;--截取'['之后的数据,包括'['

oracle 查询结果替换:

select replace(a.type,'/','.')   from feedback a;--将查询结果中'/'替换成'.'

 

### Oracle 数据库中截取字符串函数的使用方法 在 Oracle 数据库中,`SUBSTR` 是用于截取字符串的主要函数之一。其基本语法如下: ```sql SUBSTR(string, start, [length]) ``` - `string`: 表示源字符串,即需要截取的目标字符串。 - `start`: 开始位置,从 1 开始计数。如果是负数,则从字符串末尾向前计算位置[^3]。 - `[length]`: 可选参数,指定要截取的子串长度。如果不提供该参数,默认会返回从 `start` 到字符串结尾的所有字符。 #### 示例:简单截取字符串 以下是一个简单的例子,展示如何使用 `SUBSTR` 函数从字符串中提取部分数据: ```sql SELECT SUBSTR('HelloWorld', 2, 5) AS result FROM dual; -- 输出: elloW ``` 这里从第 2 个字符开始,截取长度为 5 的子串[^4]。 #### 结合 INSTR 定位字符位置 当需要动态定位某个分隔符的位置时,可以结合 `INSTR` 函数一起使用。`INSTR` 返回的是某子串首次出现的位置。其语法如下: ```sql INSTR(string, substring [, start_position [, occurrence ] ]) ``` - `string`: 被搜索的字符串。 - `substring`: 需要查找的子串。 - `start_position`: 可选参数,定义从哪个位置开始搜索(默认为 1)。 - `occurrence`: 可选参数,定义匹配的次数(默认为第一次匹配)。 ##### 示例:去除文件名中的扩展名 假设有一列存储了完整的文件路径 `/data_share/webfile/2021/12/4e/71/4e7106f91b524c5ba2565b86df3bdbc6.file`,我们希望仅保留路径而不包含文件名。可以通过以下 SQL 实现: ```sql SELECT file_path, SUBSTR(file_path, 1, INSTR(file_path, '/') - 1) AS path_only FROM your_table; ``` 此查询通过 `INSTR` 找到最后一个斜杠 (`/`) 的位置,并利用 `SUBSTR` 提取出路径部分[^1]。 #### 替换特定模式的内容 如果还需要进一步清理数据,比如删除某些固定的前缀或者后缀,可以考虑使用 `REPLACE` 或者正则表达式功能。例如: ```sql SELECT REPLACE('/data_share/webfile/', '/data_share/', '') AS cleaned_path FROM dual; -- 输出: webfile/ ``` 以上展示了如何灵活运用多个字符串操作函数完成复杂的数据清洗任务。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值