Salut ,
je suis en oracle 10g
j'aime comparer deux adresse IP jusqu'au 3 eme point .
par exemple 192.168.12.15 et 192.168.12.19 sont egaux .
merci d'avance pour votre aide
Salut ,
je suis en oracle 10g
j'aime comparer deux adresse IP jusqu'au 3 eme point .
par exemple 192.168.12.15 et 192.168.12.19 sont egaux .
merci d'avance pour votre aide
utilises substr et instr
ou bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT 1 FROM DUAL WHERE REGEXP_SUBSTR (:ip, '[^.]+', 1, 1) = REGEXP_SUBSTR (:ip1, '[^.]+', 1, 1) AND REGEXP_SUBSTR (:ip, '[^.]+', 1, 2) = REGEXP_SUBSTR (:ip1, '[^.]+', 1, 2) AND REGEXP_SUBSTR (:ip, '[^.]+', 1, 3) = REGEXP_SUBSTR (:ip1, '[^.]+', 1, 3)
Publications: http://schelabi.developpez.com/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SQL> select regexp_substr('192.168.12.15','\d{1,3}\.\d{1,3}\.\d{1,3}\',1) a, 2 regexp_substr('192.168.12.19','\d{1,3}\.\d{1,3}\.\d{1,3}\',1) b 3 from dual 4 ; A B -------------------------------- -------------------------------- 192.168.12 192.168.12
C'est encore plus simple, mnitu bravo![]()
Publications: http://schelabi.developpez.com/
Pour juste une opération simple comme celle ci, l'utilisation du regexpr n'est pas super utile
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT SUBSTR('192.168.12.15',1, INSTR('192.168.12.15', '.', -1)-1) a, SUBSTR('192.168.12.19',1, INSTR('192.168.12.19', '.', -1)-1) b FROM dual
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT SUBSTR('192.168.12.15',1, INSTR('192.168.12.15', '.', 1,3)-1) a, SUBSTR('192.168.12.19',1, INSTR('192.168.12.19', '.', 1,3)-1) b FROM dual
MCM: bien sûr regexp n'est pas utile et lent de surcroix...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 where regexp_substr('192.168.12.15','.*\.')=regexp_substr('192.168.12.19','.*\.')
Oui c'est vrai. Sauf que les requêtes ne sont pas vraiment équivalentes:
Je pense que c'est à celui qui fera l'emploie de décider de quoi il a vraiment besoin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SQL> with data as 2 ( 3 Select '192.168.12.15' ip From dual 4 Union ALL 5 Select 'AAA.BBB.CC.DDD' ip From dual 6 ) 7 Select SUBSTR(ip,1, INSTR('192.168.12.15', '.', -1)-1) MCM, 8 regexp_substr(ip,'.*\.') Laurent, 9 regexp_substr(ip,'\d{1,3}\.\d{1,3}\.\d{1,3}\',1) Marius 10 From data 11 / MCM LAURENT MARIUS ---------- -------------- -------------- 192.168.12 192.168.12. 192.168.12 AAA.BBB.CC AAA.BBB.CC.
encore plus simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 rtrim('192.168.12.15','0123456789')= rtrim('192.168.12.19','0123456789')
Sacré Laurent! Faut toujours que tu nous sortes des soluces délirantes de derrière les fagots![]()
Ah, ben oui.
Quel con de pas y avoir pensé !![]()
Tirez pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SQL> r 1 SELECT chartorowid('192.165.26.19') ip1, 2 chartorowid('192.165.26.15') ip2 3* from dual IP1 IP2 ------------------ ------------------ 00000192.0165.0026 00000192.0165.0026![]()
Partager