Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    [Requête] Rechercher un chiffre dans une colonne de type integer
    Bonjour
    j 'ai un problème de requête je voulais savoir comment traduire en requête sous la base informix.

    je veux un nombre commençant par 9 dans une colonne de type Integer.
    le LIKE '9%' fonctionne pour les varchar mais pas les Integer.
    Merci d'avance

  2. #2
    Rédacteur

    Normal un SGBD Relationnel n'est pas un tableau, les données sont typées.

    2 solutions :

    1 - transformer les nombres en chaine de caractères et faire le LIKE :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM   MaTable
    WHERE  CAST(maColone AS VARCHAR(32)) LIKE '9%'


    2 - faire un savant calcul :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM   MaTable
    WHERE  FLOOR(maColone / POWER(10, FLOOR(LOG10(NULLIF(maColone, 0))))) = 9


    testé sur SQL Server sur table comptant 1 250 000 lignes :

    1) SQL Server Temps d'exécution*: Temps UC = 623*ms, temps écoulé = 1819*ms.
    2) SQL Server Temps d'exécution*: Temps UC = 672*ms, temps écoulé = 914*ms.

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  3. #3
    Membre du Club
    Bonjour,

    je te propose:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    select monChamp
    FROM maTable
    where ( monChamp =9)
    or ( monChamp > 90 and monChamp <   100 ) 
    or ( monChamp > 900 and monChamp <  1 000 ) 
    or ( monChamp > 9 000 and monChamp < 10 000 ) 
    or ( monChamp > 90 000 and monChamp < 100 000 ) 
    or ( monChamp > 900 000 and monChamp < 1 000 000 ) 
    or ( monChamp > 9 000 000 and monChamp < 10 000 000 ) 
    or ( monChamp > 90 000 000 and monChamp < 100 000 000 ) 
    or ( monChamp > 900 000 000 and monChamp < 1 000 000 000 ) 
    .......