Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2011, 14h42   #1
Futur Membre du Club
 
Inscription : juillet 2006
Messages : 123
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 123
Points : 16
Points : 16
Par défaut regexp_like, début/fin de chaîne

Bonjour,

Voici une valeur que j'ai en base :
0012345678

Voici ce que j'utilise pour valider que cette valeur correspont bien à 10 digits :
- regexp_like (t1.myCol, '^[[:digit:]{10}]$') ne me retourne rien !!!
- regexp_like (t1.myCol, '^[[:digit:]{10}]') me retourne ma valeur 0012345678
- regexp_like (t1.myCol, '[[:digit:]{10}]$') me retourne ma valeur 0012345678
- regexp_like (t1.myCol, '[[:digit:]{10}]') me retourne ma valeur 0012345678

Pourquoi le premier cas ne fonctionne pas ?
Il doit y avoir une subtilité qui m'échappe.

PS : oui j'ai testé avec une requête minimale, sans autre critère qui pourrait fausser le résultat

Merci à vous !
lamoua76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h45   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
comme ça ça marche :
Code :
1
2
3
4
5
6
7
8
9
10
11
SQL> WITH t1 AS (
  2  SELECT '0012345678' AS myCol FROM dual
  3  )
  4  SELECT t1.myCol AS c FROM t1
  5   WHERE regexp_like (t1.myCol, '^[[:digit:]]{10}$');
 
C
----------
0012345678
 
SQL>
Oracle Regular Expressions
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 18h06   #3
Futur Membre du Club
 
Inscription : juillet 2006
Messages : 123
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 123
Points : 16
Points : 16
Oh ok...
J'aurais préféré que si on ne met pas les crochets au bon endroit que ça ne fonctionne jamais . J'imagine que ca doit se justifier.

Bref, je test ça demain, merci !
lamoua76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 19h02   #4
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Salut !

Ca marche aussi sans regexp
(Si je me trompe pas)

Code :
1
2
3
4
5
6
7
8
9
 
WITH t1 AS (
  SELECT '0012345678' AS myCol FROM dual UNION ALL
  SELECT '012345678' AS myCol FROM dual UNION ALL
  SELECT '0012 456789' AS myCol FROM dual UNION ALL
  SELECT '001234567a' AS myCol FROM dual 
    )
    SELECT mycol, CASE WHEN rtrim(t1.mycol, '0123456789') IS NULL AND length(t1.mycol) = 10 THEN 'Ouais' ELSE 'Nan' END  
    FROM t1
Code :
1
2
3
4
5
6
7
8
9
 
MYCOL       CASEW
----------- -----
0012345678  Ouais
012345678   Nan  
0012 456789 Nan  
001234567a  Nan  
 
4 rows selected.
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h41.


 
 
 
 
Partenaires

Hébergement Web