关闭

Oracle中的正则替换【REGEXP_REPLACE】和正则like【REGEXP_like】

标签: regexp_replaceregexp_like
29127人阅读 评论(3) 收藏 举报
分类:


下面图片中有三种“加瓦”,java,Java,JAVA




select regexp_replace(city,'java','苍井空',1,0,'i') from lidw li




regexp_replace(1,2,3,4,5,6)

语法说明:1:字段   2:替换的字段  3:替换成什么  4:起始位置(默认从1开始)  5:替换的次数(0是无限次)  6:不区分大小写


【补充:】用regexp_replace来判断oracle中的某列为数字的:

以下是百度知道的答案:是否数字-百度知道

SELECT(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL;---取出值里面的全部数字

SELECT LENGTH('LSS12345'),LENGTH(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL; ---查询出字段的长度和字段内数字的长度

SELECT* FROM DUAL  WHERE LENGTH('LSS12345') = LENGTH(REGEXP_REPLACE('LSS12345', '[^0-9]')) ;  ----查询这个字段所有的纯数字列

自己的延伸:判断入库的时候,插入的手机号码(11位)

select * from t_d_strategy st where length(regexp_replace(st.s_name,'[^0-9]')) =11 and st.s_isdeleted = 0

由以上的sql语句知道:regexp_replace是用替换的方式取出数据,那么如果要得到这列全部是数字的呢???


方式①:

 select * from t_d_strategy st where regexp_like(st.s_name,'^[0-9]+[0-9]$');


方式②:来自百度文库的答案某列全是数字-百度文库

 select * from t_d_strategy st where trim(translate(nvl(st.s_name,'x'),'0123456789',' ')) is NULL;


translate函数的第三个参数是一个空格,不是'', 因为translate的第三个参数如果为空的话,那么永远返回'',这样的就不

能达到过滤纯数字的目的。这样把所有的数字都转化为空格,如果全部是由数 构成,那么一旦trim后自然是空,实现

了上述目标。当然如果想排除空项的话,可以这样写:


  select * from table where trim(translate(nvl(column,'x'),'0123456789',' ')) is NULL;--x 表示任何'0-9'以外的字符。



两种方式得到的结果一模一样,哼哼,涨姿势了~


函数nvl说明:nvl函数-百度知道

如果你某个字段为空,但是你想让这个字段显示0
nvl(字段名,0),就是当你选出来的时候,这个字段虽然为空,但是显示的是0,当然这个0也可以换成其他东西,如:1,2,3……

函数translate说明:translate函数-博客园

一、语法: 
TRANSLATE(string,from_str,to_str) 
二、目的 
返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE 是 REPLACE 所提供的功能的一个超集。如果 from_str 比 to_str 长,那么在 from_str 中而不在 to_str 中的额外字符将从 string 中被删除,因为它们没有相应的替换字符。to_str 不能为空。Oracle 将空字符串解释为 NULL,并且如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。 
三、允许使用的位置 
过程性语句和SQL语句。 
四、示例 
Sql代码
SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual; 
TRANSLATE ( 
-------------- 
123456ghij 


SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual; 
TRANSL 
---------- 
123456 


---------------------------------------------------------华丽的分界符---------------------------------------------------------


select * from lidw where regexp_like(city,'java','i')




regexp_like(1,2,3)

语法说明:1:字段  2:查询的关键字  3:不区分大小写(哈哈,以后就可以不用 (upper()))



2
1
查看评论

REGEXP_REPLACE 函数

REGEXP_REPLACE 函数  让我们首先看一下传统的 REPLACE SQL 函数,它把一个字符串用另一个字符串来替换。假设您的数据在正文中有不必要的空格,您希望用单个空格来替换它们。利用 REPLACE 函数,您需要准...
  • gxftry1st
  • gxftry1st
  • 2014-03-29 13:46
  • 52512

正则表达式 REGEXP_REPLACE

regexp_replace(srcstr => ,pattern => ,replacestr => ,position => ,occurrence => ,modifier => ) 语法说明:srcstr:字段 pattern:替换的字段 repla...
  • Angelina7
  • Angelina7
  • 2017-06-30 15:51
  • 870

PLSQL replace and regexp_replace

语法: Replace(Source String, Search String, Replace String) RegExp_replace(Source String, Pattern, Replace String, position, occurrence, match_paramet...
  • onlyzxc
  • onlyzxc
  • 2016-12-28 18:56
  • 462

Oracle的REGEXP_REPLACE函数简单用法

REGEXP_REPLACE让你搜索的字符串的正则表达式模式REPLACE函数的功能。默认情况下, 该函数返回source_char与replace_string取代了正则表达式模式的每个实例。 返回的字符串是在相同的字符集source_char。 语法 Oracle数据库中的REGEX...
  • itmyhome
  • itmyhome
  • 2015-12-24 22:40
  • 10187

REGEXP_REPLACE 和REGEXP_SUBSTR函数的用法(以及在其中如何使用正则表达式)

正则表达式--- REGEXP_REPLACE 函数 转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/9677839 这题又是考正则表达式,我们先根据题意,操作如下: [html] vie...
  • haiross
  • haiross
  • 2014-12-23 16:16
  • 11806

replaceregexp

 找了好久终于在ant里面找到了这个task可以使用正则表达式进行字符串替换,分享一下doc的说明在http://ant.apache.org/manual/OptionalTasks/replaceregexp.html     ...
  • gaoyuan21810
  • gaoyuan21810
  • 2008-12-15 18:07
  • 3444

Oracle正则表达式函数:regexp_like、regexp_substr、regexp_instr、regexp_replace

<br />Oracle使用正则表达式离不开这4个函数:<br />1。regexp_like<br />2。regexp_substr<br />3。regexp_instr<br />4。regexp_replace<br /&g...
  • heicm
  • heicm
  • 2011-04-20 14:46
  • 1313

regexp_replace按条件替换部分段

直接上语句看结果 SQL> WITH tab AS 2 (SELECT '000000-00000h-010000-00000b-000000-000000-000000-000000-00002e-00003a' col FROM dual 3 ) 4 SE...
  • jgmydsai
  • jgmydsai
  • 2013-07-20 21:23
  • 1765

C++ - 正则表达式(regex) 替换(replace) 的 详解 及 代码

正则表达式(regex) 替换(replace) 的 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17321639 正则表达式, 可以替换(replace)匹配的字符串, 使用reg...
  • u012515223
  • u012515223
  • 2013-12-14 17:29
  • 11918

Oracle:regexp_replace正则表达式函数的应用

Oracle:regexp_replace正则表达式函数的使用 标签:regexp_replace regexp replace oracle 正则 函数的参数说明: 一共6个参数,分别是 1、待匹配的字符串 2、正则表达式 3、替换的字符 4、标识从第几个字符开始正则表达式匹配。(默...
  • chenhao237
  • chenhao237
  • 2014-10-13 09:23
  • 786
    个人资料
    • 访问:2385237次
    • 积分:19090
    • 等级:
    • 排名:第546名
    • 原创:339篇
    • 转载:29篇
    • 译文:2篇
    • 评论:495条
    最新评论