偷偷学习被我发现

偷偷学习被我发现

  1. 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;
  1. 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; 
  1. 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; 


09-17 02:05