SUBSTRING
📄字数 759
👁️阅读量 加载中...
功能描述
从指定字符串的指定位置开始截取指定长度的子串,截取长度以字符为单位,功能同 MID() 和 SUBSTR() 函数。
语法格式
sql
SUBSTRING(expr1, expr2[, expr3])
SUBSTRING(expr1 FROM expr2 FOR expr3)
SUBSTRING(expr1 FOR expr3 FROM expr2)
SUBSTRING(expr1 FOR expr3)
SUBSTRING(expr1 FROM expr2)
输入参数
expr1
:VARCHAR
类型或者能隐式转换为VARCHAR
类型的其他类型的值,源字符串。expr2
:INTEGER
类型或者能隐式转换为INTEGER
类型的其他类型的值,起始位置。expr3
:INTEGER
类型或者能隐式转换为INTEGER
类型的其他类型的值,截取长度。
输出结果
VARCHAR
类型,任意输入参数为 NULL
时,输出结果为 NULL
。对截取的起始位置以及截取长度的处理遵循以下规则:
- 当起始位置大于
0
时,从左往右查找第一个字符的位置。 - 当起始位置小于
0
时,从右往左查找第一个字符的位置。 - 当起始位置等于
0
或者缺省起始位置时,视为截取起始位置为1
。 - 当截取长度小于
0
或者等于0
时,函数返回空字符串。 - 缺省截取长度以及截取长度值大于目标字符串截取位置到末尾的长度时,视为截取到目标字符串的末尾。
示例
sql
-- 截取'中文字符测试'字符串第二个字符开始的三个字符
SQL> SELECT SUBSTRING('中文字符测试', 2, 3) FROM dual;
+--------+
| EXPR1 |
+--------+
| 文字符 |
+--------+
-- 截取'中文字符测试'字符串第二个字符开始的三个字符
SQL> SELECT SUBSTRING('中文字符测试' FROM 2 FOR 3) FROM dual;
+--------+
| EXPR1 |
+--------+
| 文字符 |
+--------+
-- 将'中文字符测试'字符串从第二个字符开始截取到字符串末尾
SQL> SELECT SUBSTRING('中文字符测试' FROM 2) FROM dual;
+------------+
| EXPR1 |
+------------+
| 文字符测试 |
+------------+