Comment utiliser REGEXP_LIKE dans une instruction case?

Je voudrais utiliser REGEXP_LIKE dans mon CAS, la déclaration

2 Questions

  1. Comment puis-je obtenir REGEXP_LIKE de travail dans ce CAS?
    Je reçois le message d'erreur suivantes
    ORA-00904: "TRUE": invalid identifier

  2. Re regex, pourquoi ne le select '12345678' from dual requête en retour 1?

Regex Règle

De 0 à 6 chiffres,suivi par 0 ou 1 point décimal, suivi de 0 à six chiffres.

with expression_row as 
(select 'zzzz'     as expression from dual union all
select '12345678' as expression from dual union all
select '12.33333' as expression from dual union all
select '.222222'  as expression from dual)
select 
expression,
       case regexp_like( expression, '^\d{0,6}(\.{0,1}\d{0,6})$') 
      -- [0-6 digits][0-1 decimal][0-6 digits]
       when TRUE then 'Y'
       else 'N'
      end as valid_y_n
    from expression_row; 

De Sortie Désiré

zzzz     N
12345678 N
12.33333 Y
.222222  Y

Je suis la validation de ma regex modèle à l'aide de cette requête.

select 1 as valid from dual 
where regexp_like( '12345678', '^\d{0,6}\.{0,1}\d{0,6}$');
  • Votre expression est la mise en correspondance 78 dans 12345678 pour le fait que vous commencer à l'appariement ^ début de ligne, 0-6 chiffres, puis la recherche d'un décimal 0 or 1 temps qui est la même que de rendre facultative l'e.g \.?, suivie par 0-6 chiffres. Si vous ne voulez pas de match puis retirez le {0,1} e.g ^\d{0,6}(\.\d{0,6})$
InformationsquelleAutor zundarz | 2013-10-21