当前位置:   article > 正文

Oracle数据库中instr()与substr()函数详解_oracle instr substr

oracle instr substr

instr()函数(俗称:字符查找函数)

格式1:instr( string1, string2 )    

格式1解释 :instr(源字符串, 目标字符串)

格式2:instr( string1, string2, start_position, nth_appearance)   

格式2解释:instr(源字符串, 目标字符串, 起始位置, 匹配序号)


实例

格式1实例

  1. select instr('helloworld','l') from table
  2. --返回结果:3 默认第一次出现“l”的位置
  3. select instr('helloworld','low') from table
  4. --返回结果:4 即“low”同时出现,第一个字母“l”出现的位置
  5. select instr('helloworld','world') from table
  6. --返回结果:6 即“world”同时出现,第一个字母“w”出现的位置

 格式2实例

  1. select instr('helloworld','l',2,2) from table
  2. -- 返回结果:4 也就是说:在"helloworld"的第2(e)号位置开始,查找第二次出现的“l”的位置
  3. select instr('helloworld','l',3,2) from table
  4. -- 返回结果:4 也就是说:在"helloworld"的第3(l)号位置开始,查找第二次出现的“l”的位置
  5. select instr('helloworld','l',-1,1) from table
  6. -- 返回结果:9 也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第一次出现的“l”的位置
  7. select instr('helloworld','l',-2,2) from table
  8. -- 返回结果:4 也就是说:在"helloworld"的倒数第2(l)号位置开始,往回查找第二次出现的“l”的位置

substr()函数 (俗称:字符截取函数)

格式1:substr(string, start_position,  str_num)

格式1解释:substr(需要截取的字符串, 截取字符串的开始位置, 要截取的字符串的长度)

格式2:substr(string, start_position)

格式2解释:substr(需要截取的字符串, 截取字符串start_position后所有的字符串)

  1. -- 例1
  2. select substr('Hello,World',1,3) as substr_value from table
  3. -- 返回结果:Hel,截取从“H”开始3个字符
  4. -- 例2
  5. select substr('Hello,World',2,3) as substr_value from table
  6. -- 返回结果:ell,截取从“e”开始3个字符
  7. -- 例3
  8. select substr('HelloWorld',0,100) as substr_value from table
  9. -- 返回结果:HelloWorld,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理
  10. -- 字符串最大数量返回。
  11. -- 例4
  12. select substr('Hello World',5,3) as substr_value from table
  13. -- 返回结果:o W (中间的空格也算一个字符串,结果是:o空格W)
  14. -- 例5
  15. select substr('HelloWorld',-1,3) as substr_value from table
  16. -- 返回结果:d (从后面倒数第一位开始往后取1个字符,而不是3个
  17. -- 例6
  18. select substr('HelloWorld',-2,3) as substr_value from table
  19. -- 返回结果:ld (从后面倒数第二位开始往后取2个字符,而不是3个
  20. -- 例7
  21. select substr('HelloWorld',-3,3) as substr_value from table
  22. -- 返回结果:rld (从后面倒数第三位开始往后取3个字符)
  23. -- 例8
  24. select substr('HelloWorld',-4,3) as substr_value from table
  25. -- 返回结果:orl (从后面倒数第四位开始往后取3个字符)
  26. -- 例9
  27. select substr('HelloWorld',0) as substr_value from table
  28. -- 返回结果:HelloWorld,截取所有字符
  29. -- 例10
  30. select substr('HelloWorld',1) as substr_value from table
  31. -- 返回结果:HelloWorld,截取所有字符
  32. -- 例11
  33. select substr('HelloWorld',2) as substr_value from table
  34. -- 返回结果:elloWorld,截取从“e”开始之后所有字符
  35. -- 例12
  36. select substr('HelloWorld',3) as substr_value from table
  37. -- 返回结果:lloWorld,截取从“l”开始之后所有字符
  38. -- 例13
  39. select substr('HelloWorld',-1) as substr_value from table
  40. -- 返回结果:d,从最后一个“d”开始 往回截取1个字符
  41. -- 例14
  42. select substr('HelloWorld',-2) as substr_value from table
  43. -- 返回结果:ld,从最后一个“d”开始 往回截取2个字符
  44. -- 例15
  45. select substr('HelloWorld',-3) as substr_value from table
  46. -- 返回结果:rld,从最后一个“d”开始 往回截取3个字符

总结

1、当start_position这个参数等于0或1时,都是从第一位开始截取
2、假如HelloWorld之间有空格,那么空格也将算在里面

3、虽然例5、例6截取的都是3个字符,结果却不是3 个字符;当从后往前截取字段时,只要 |start_position| < str_num,那么取的是|start_position|的个数;

当 |start_position| ≥ str_num时,才取str_num的个数,如例7,例子8
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/231011
推荐阅读
相关标签
  

闽ICP备14008679号