oracle字符串转为日期格式 截取字符串

本文介绍了如何使用TO_DATE函数将字符串转换为日期格式,并提供了一个具体的例子来展示如何从身份证号码中提取出生日期。

to_date('时间类型字段','格式')
如:select to_date(sysdate,'yyyy-MM-DD HH24:MI:ss') from dual


扩展:通过身份证得到出生日期
select to_date(substr(IDCARD,7,8),'yyyy-MM-DD')  from CHECKIN_INFO where STATE = '0'

### Oracle 数据库中字符串截取函数与方法 在 Oracle 数据库中,字符串截取操作主要依赖于内置的字符串函数,如 `SUBSTR` 和 `INSTR`。以下详细介绍这些函数的使用方法及示例。 #### 1. 使用 `SUBSTR` 函数进行字符串截取 `SUBSTR` 函数用于从指定位置开始截取字符串的一部分。其语法如下: ```sql SUBSTR(string, start_position, [length]) ``` - `string`:要截取的源字符串。 - `start_position`:开始截取的位置(正数表示从左到右,负数表示从右到左)。 - `length`:可选参数,指定截取的字符长度。 **示例**: ```sql SELECT SUBSTR('Hello SQL!', 1) FROM dual; -- 从第1个字符开始截取所有字符,返回 'Hello SQL!'[^4] SELECT SUBSTR('Hello SQL!', 2) FROM dual; -- 从第2个字符开始截取到末尾,返回 'ello SQL!'[^4] SELECT SUBSTR('Hello SQL!', -4) FROM dual; -- 从倒数第4个字符开始截取到末尾,返回 'SQL!'[^4] SELECT SUBSTR('Hello SQL!', 3, 6) FROM dual; -- 从第3个字符开始截取6个字符,返回 'llo SQ'[^4] SELECT SUBSTR('Hello SQL!', -4, 3) FROM dual; -- 从倒数第4个字符开始截取3个字符,返回 'SQL' ``` #### 2. 使用 `INSTR` 函数定位子字符串位置 `INSTR` 函数用于查找子字符串在源字符串中的位置。其语法如下: ```sql INSTR(string, substring, [start_position], [nth_appearance]) ``` - `string`:源字符串。 - `substring`:要查找的子字符串。 - `start_position`:可选参数,指定从哪个位置开始查找(默认为1)。 - `nth_appearance`:可选参数,指定查找第几次出现的子字符串位置(默认为1)。 **示例**: ```sql SELECT INSTR('Hello_SQL_World', '_') FROM dual; -- 返回第6位,即第一个下划线的位置[^4] SELECT INSTR('Hello_SQL_World', '_', 1, 2) FROM dual; -- 返回第9位,即第二个下划线的位置 ``` #### 3. 结合 `SUBSTR` 和 `INSTR` 实现复杂字符串截取 当需要根据特定分隔符(如 `_`)截取字符串时,可以结合 `SUBSTR` 和 `INSTR` 函数实现。 **示例**: 假设有一个字符串 `'Employee_Name_Department_Address'`,需要提取其中的部门名称。 ```sql SELECT SUBSTR('Employee_Name_Department_Address', INSTR('Employee_Name_Department_Address', '_', 1, 2) + 1, INSTR('Employee_Name_Department_Address', '_', 1, 3) - INSTR('Employee_Name_Department_Address', '_', 1, 2) - 1) FROM dual; -- 返回 'Department'[^1] ``` #### 4. 其他相关字符串函数 除了 `SUBSTR` 和 `INSTR`,Oracle 还提供了其他常用的字符串函数: - `LENGTH`:返回字符串的长度。 - `REPLACE`:替换字符串中的子字符串。 - `TRIM`:去除字符串两端的空格或指定字符。 - `LOWER` 和 `UPPER`:将字符串转换为小写或大写。 **示例**: ```sql SELECT LENGTH('Hello SQL!') FROM dual; -- 返回 10[^2] SELECT REPLACE('Hello SQL!', 'SQL', 'World') FROM dual; -- 返回 'Hello World'[^2] SELECT TRIM(' Hello SQL! ') FROM dual; -- 返回 'Hello SQL!'[^2] SELECT LOWER('HELLO'), UPPER('hello') FROM dual; -- 返回 'hello', 'HELLO'[^2] ``` #### 注意事项 - 当字符串长度不固定时,仅使用 `SUBSTR` 函数可能无法满足需求,需结合 `INSTR` 定位分隔符位置后进行截取[^1]。 - 如果字符串或子字符串为 `NULL`,则 `INSTR` 函数会返回 `NULL`[^3]。 ### 示例总结 通过上述函数组合,可以灵活地对字符串进行各种截取和处理操作。以下是一个综合示例: ```sql SELECT SUBSTR('Employee_Name_Department_Address', INSTR('Employee_Name_Department_Address', '_', 1, 1) + 1, INSTR('Employee_Name_Department_Address', '_', 1, 2) - INSTR('Employee_Name_Department_Address', '_', 1, 1) - 1) AS Name FROM dual; -- 提取 'Name' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值