- length()、lengthb()
lengthb(string)
获取string所占的字节长度,返回字符串的长度,单位是字节;length(string)
获取string所占的字符长度,返回字符串的长度,单位是字符;- 对于单字节字符,length()和lengthb()是一样的。
- 可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文。
-- 一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,当数据格式为UTF8时,一个汉字占用3个字节。
--输出:3(表示'帅'这个汉字在数据库中一个汉字占3个字节)
select lengthb('帅') from dual;
--输出:9,'帅,a,b,c'字节长度是9
select lengthb('帅,a,b,c') from dual;
--输出:7,'帅,a,b,c'字符长度是7
select length('帅,a,b,c') from dual;
- replace()
- replace()函数是用另外一个值来替代串中的某个值。
REPLACE ( char, search_string [, replace_string])
,如果没有指定replace_string 变量的值,那么当发现search_string 变量的值时,就将其删除。
--指定替换值时输出:帅?a?b?c,指定','替换成‘?’
select replace('帅,a,b,c',',','?') from dual;
--不指定替换值时输出:帅abc。(不指定时就将被替换值删除)
select replace('帅,a,b,c',',') from dual;
- regexp_substr()
--source_char:目标字符串
--pattern:正则表达式
--position:(可选)搜索开始位置,默认为1
--occurrence:(可选)第n个匹配位置,默认为1
--match_parameter:(可选)是取值范围:
--i:大小写不敏感;
--c:大小写敏感;
--n:点号 . 不匹配换行符号;
--m:多行模式;
--x:扩展模式,忽略正则表达式中的空白字符。
REGEXP_SUBSTR(source_char, pattern [, position [, occurrence [, match_parameter ]]]);
--输出:BB (正则表达式意思是以逗号为分割标准)
select regexp_substr('帅,aa,BB,cc,','[^,]+',1,3,'c') from dual;