-1
在Oracle我想2串比较如下REGEXP_REPLACE字符串比较
19.12.XX.11 = 19.12.YY.11
我已经与只尝试下面的一个,但它替换第一个字符只有
select REGEXP_REPLACE('19.12.1.11' ,'.', 'x', 4, 4 )
from dual;
在Oracle我想2串比较如下REGEXP_REPLACE字符串比较
19.12.XX.11 = 19.12.YY.11
我已经与只尝试下面的一个,但它替换第一个字符只有
select REGEXP_REPLACE('19.12.1.11' ,'.', 'x', 4, 4 )
from dual;
甲骨文设置:
CREATE TABLE ipaddresses (addr1, addr2) AS
SELECT '19.12.0.11', '19.12.1.11' FROM DUAL;
查询:
SELECT addr1,
addr2,
CASE TO_NUMBER(REGEXP_SUBSTR(addr1, '\d+', 1, 1))
WHEN TO_NUMBER(REGEXP_SUBSTR(addr2, '\d+', 1, 1))
THEN 'Match'
ELSE 'No Match'
END AS Byte1,
CASE TO_NUMBER(REGEXP_SUBSTR(addr1, '\d+', 1, 2))
WHEN TO_NUMBER(REGEXP_SUBSTR(addr2, '\d+', 1, 2))
THEN 'Match'
ELSE 'No Match'
END AS Byte2,
CASE TO_NUMBER(REGEXP_SUBSTR(addr1, '\d+', 1, 3))
WHEN TO_NUMBER(REGEXP_SUBSTR(addr2, '\d+', 1, 3))
THEN 'Match'
ELSE 'No Match'
END AS Byte3,
CASE TO_NUMBER(REGEXP_SUBSTR(addr1, '\d+', 1, 4))
WHEN TO_NUMBER(REGEXP_SUBSTR(addr2, '\d+', 1, 4))
THEN 'Match'
ELSE 'No Match'
END AS Byte4
FROM ipaddresses;
输出:
ADDR1 ADDR2 BYTE1 BYTE2 BYTE3 BYTE4
---------- ---------- -------- -------- -------- --------
19.12.0.11 19.12.1.11 Match Match No Match Match
'在这种情况下LIKE'运营商将做的工作就好了。例如:'在哪里ipaddr像'19 .12。%。11'' –
@NicholasKrasnov你评论自己的答案 – saikumarm