Oracle中Substr函数的使用,对转载文章做了一点补充

转载自https://www.cnblogs.com/dshore123/p/7805050.html。
补充以下注意事项:
substr(String string,int a)格式的时候,不管a是整数还是负数,如果a的绝对值大于源字符的长度截取的值即为空

### Oracle 中 `SUBSTR` 函数详解 #### 功能描述 在 Oracle 数据库中,`SUBSTR()` 函数用于从字符串中提取子字符串。此函数非常灵活,能够根据不同需求提取字符串的不同部分[^2]。 #### 语法结构 `SUBSTR` 函数的通用语法如下: ```sql SUBSTR(string, start_position [, substring_length]) ``` - `string`: 需要处理的目标字符串。 - `start_position`: 子串开始的位置。正数值表示从左向右计数;负数值则意味着从右边往左边计算。 - `substring_length`(可选): 要获取的字符数量。如果不提供该参数,则默认返回从起始位置直到原字符串结尾的所有字符[^4]。 #### 特殊情况处理 当未指定 `substring_length` 参数时,Oracle 将自动把剩余所有字符作为结果返回给用户。而一旦设定的 `substring_length` 值小于1,那么最终得到的结果将是 NULL[^1]。 #### 实际应用案例 下面是一些具体的例子来展示如何运用 `SUBSTR` 函数: ##### 示例 1: 提取固定长度的子串 假设有一个名为 `example_text` 的字段存储着 "HelloWorld!" 这样的数据,现在想要取出其中间五个字母组成的单词 “oWor”。 ```sql SELECT SUBSTR(example_text, 6, 5) FROM dual; -- 结果:"oWorl" ``` 请注意,在这里因为是从第六位开始选取连续五位所以实际上获得的是 "oWorl" 而不是预期中的 "oWor". 如果希望正好取得四个字符可以调整第二个参数为7. ##### 示例 2: 不限制结束位置的情况 继续沿用上面的例子,如果我们只关心从某个特定索引处开始的内容而不介意其后的具体数目,就可以省略第三个参数。 ```sql SELECT SUBSTR('HelloWorld!', 8) AS result_string FROM DUAL; -- 结果:"rld!" ``` 在这个查询里,由于没有给出截断宽度,因此整个表达式的输出就是原始字符串自第八个字符之后的部分。 ##### 示例 3: 处理负数起点的情形 有时候可能需要逆序访问字符串内的成分,这时便可以通过传递一个小于零整数的方式实现这一点。 ```sql SELECT SUBSTR('abcdefg', -3, 2) as reversed_substring FROM DUAL; -- 结果:"ef" ``` 上述命令会先定位到最后三个元素所在之处再向前移动两位从而选出所需的片段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值