格式1:
substr(string,start_pos,length)
格式2:
substr(string,start_pos)
说明:
从指定位置start_pos截取字符串string的length位,如果不指定length(格式2)则从指定位置start_pos截取字符串string。
start_pos等于0或者1均从左边第一位开始截取。
如果start_pos为负整数,则从右截取字符串。
举例子:
SELECT
substr('abcdef', 0, 3),
substr('abcdef', 1, 3),
substr('abcdef', 3),
substr('abcdef', - 3)
FROM
dual;
结果:
格式1:
instr(string,sub_string,start_pos,times)
说明:
从字符串string的指定位置start_pos开始查询子串sub_string第times次出现的位置。
注意:start_pos,times为可选参数,默认值均为1
举例子:
SELECT
instr('abcfdgfdhd', 'fd')
FROM
dual;
SELECT
'Hello' || ' world'
FROM
dual;
结果:
ltrim 去字符串首部空格
rtrim 去字符串尾部空格
trim 去字符串首尾空格
举例子:
SELECT
ltrim(' a b c ') s1, rtrim(' a b c ') s2, trim( ' a b c ') s3
from dual;
结果:
与trim类似,去掉前导使用关键字leading,去掉后缀使用关键字trailing,都去除不实用关键字。
举例子:
SELECT
TRIM(LEADING '1' FROM '111abc111'),
TRIM(TRAILING '1' FROM '111abc111'),
TRIM('1' FROM '111a111bc111')
FROM
dual;
结果:
格式1:
replace(string,sub_string1,sub_string2)
说明:
用字符串 sub_string2 替代string中的 sub_string1,如果不指定sub_string2则删除string中的sub_string1
举例子:
SELECT
replace('abc', 'b', 'xy'),
replace('abc', 'b')
FROM
dual;
结果:
格式1:
translate(string,serial1,serial2)
说明:
用序列 serial2 中的字符一一替换 serial1 中的字符,如果不指定则删除。
注意:序列serial1和serial2左对齐一一对译
举例子:
SELECT
translate('abcdafgdqwe', 'ad', '**')
FROM
dual;
结果:
initcap 首字母大写
lower 转小写
upper 转大写
注意:只争对英文字母,对汉字无效
举例子:
SELECT
lower('背景'),
lower('abccd'),
upper('def'),
initcap('efg')
FROM
dual;
结果:
用于控制输出格式
lpad 左添充
lpad(string,length,pad_char)
string为待优化输出格式字符串,length为输出字符串总长度,pad_char为填充字符串
如果length小于string的长度,自动截取string到length位
rpad 右填充
rpad(string,length,pad_char)
举例子:
SELECT
lpad('funccccccccccccccccccc', 8, '='),
lpad('func', 8, '='),
rpad('func', 8, '-')
FROM
dual;
结果:
格式:
regexp_substr(String, pattern, position, occurrence, modifier)
说明:
string:需要进行正则处理的字符串
pattern:进行匹配的正则表达式
position:起始位置,从字符串的第几个字符开始正则表达式匹配,默认为1
occurrence:获取第几个分割出来的组,分割后最初的字符串会按分割的顺序排列成组,默认为1
modifier:模式–‘i’不区分大小写进行检索;‘c’区分大小写进行检索,默认为’c’
举例子:
SELECT
regexp_substr('daefaDH5AF12dafe', '[a-z]'),
regexp_substr('daefaDH5AF12dafe', '[^a-z]'),
regexp_substr('daefaDH5AF12dafe', '[^a-z]', 1, 1, 'c'),
regexp_substr('daefaDH5AF12dafe', '[^a-z]', 1, 1, 'i')
FROM
dual;
结果: