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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
select * from A where code between '9' and '20'
par exemple, ma requête risque de me ramener des valeurs comme '9A','10A'... voire '90'.

J'ai aussi tenté d'écrire quelquechose du type :

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
(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.)
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?