oracle中length()、lengthb()、replace()、regexp_substr()函数使用

oracle中length()、lengthb()、replace()、regexp_substr()函数使用
 1. length()、lengthb(): 
   lengthb(string)获取string所占的字节长度:返回字符串的长度,单位是字节
   length(string)获取string所占的字符长度:返回字符串的长度,单位是字符
   对于单字节字符,length()和lengthb()是一样的.
   如可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文。
   注:一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三。
   例:

select lengthb('我') from dual /*输出:3(表示我的数据库中一个汉字占3个字节)*/
select lengthb('我,a,b,c') from dual /*输出:9*/
select length('我,a,b,c') from dual  /*输出:7*/

   --------------------- 
[原作者:阿杜_ardo]  
 2. replace():
 replace()函数是用另外一个值来替代串中的某个值。
格式如下所示:
REPLACE ( char, search_string [, replace_string]) 
如果没有指定replace_string 变量的值,那么当发现search_string 变量的值时,就将其删除。
例:

select replace('我,a,b,c',',','&') from dual /*指定替换值时输出:我&a&b&c*/
select replace('我,a,b,c',',') from dual /*不指定替换值时输出:我abc。(不指定时就将被替换值删除)*/

[原作者:java_lover]  

实例:获取字符串"aa,bb,cc,dd,ee,"的“长度”也就是有几个“值”

select length('aa,bb,cc,dd,ee,') val1 from dual /*先获取总长度*/
select length(replace('aa,bb,cc,dd,ee,',',')) val2 from dual /*然后用replace()获得去掉逗号的结果并获取其长度*/
select length('aa,bb,cc,dd,ee,')-length(replace('aa,bb,cc,dd,ee,',',')) val from dual /*两个长度相减即可获取我们要的结果*/

3.regexp_substr():

功能:在目标字符串中获取符合正则表达式的字符串。
语法:

REGEXP_SUBSTR(source_char, pattern [, position [, occurrence [, match_parameter ]]])

source_char:目标字符串

pattern:正则表达式

position:(可选)搜索开始位置,默认为1

occurrence:(可选)第n个匹配位置,默认为1

match_parameter:(可选)是取值范围

  1. i:大小写不敏感;
  2. c:大小写敏感;
  3. n:点号 . 不匹配换行符号;
  4. m:多行模式;
  5. x:扩展模式,忽略正则表达式中的空白字符。

例:

select regexp_substr('我,aa,BB,cc,','[^,]+',1,3,'c') from dual /*输出:BB (正则表达式意思是以逗号为分割标准)*/

猜你喜欢

转载自blog.csdn.net/qq_35713827/article/details/83145648