Bonjour,
j'utilise oracle 10.2, je possède une table A contenant un champ code en varchar2(10) qui contient des valeurs alphanumérique et purement numérique. Je reçois en paramètre d'une IHM un intervalle formé par des valeurs purement numérique : j'aimerais pouvoir vérifier que tous les éléments de cet intervalle n'existe pas dans ma table.
Le problème c'est que lorsque j'écris quelquechose du type :
par exemple, ma requête risque de me ramener des valeurs comme '9A','10A'... voire '90'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from A where code between '9' and '20'
J'ai aussi tenté d'écrire quelquechose du type :
(avec is_number une fonction pl qui tente de caster la valeur reçue en number et renvoie 1 si cela réussi et 0 en cas d'exception.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select num_code from ( select to_number(code) num_code from A where is_number(code)=1 ) where num_code between 9 and 20
mais à ce moment oracle m'indique que num_code n'est pas du bon type et cela ne marche que si je remet les côtes dans le between du coup je retouve mes valeurs '90'...
La seule solution que je vois est de faire une boucle en pl/sql...
Voyez-vous un autre moyen d'effectuer la requete?
Partager