IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Développement SQL Server Discussion :

problème avec between


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut problème avec between
    Bonjour,
    J'ai une liste de valeurs du type

    Champ1
    CRA
    CRB
    CRC
    CRD
    CR1
    CR2

    et j'ai une table ou j'ai une correspondance du type

    Debut Fin Valeur
    CRA CR9 ABCD

    Lorsque je fais mon instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * from xxx,yyy
     
    where 
    Champ1 between Debut and Fin
    Rien n'est extrait.

    Je pense qu'il s'agit d'un probleme ascii vs EBCDIC ,
    Mais comment régler ce problème.

    Merci de votre aide.

    Philippe

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    BETWEEN sur des charactères!
    Le between est exclusif (correspond a > and < et non à >= and <=)

    Passez par des clef technique comme un AUTO INCREMENT...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Le between est exclusif
    depuis quand ?

    BETWEEN sur des charactères
    BETWEEN fonctionne sur des caractères, date, numériques (mais pas sur les TEXT et autres BLOB)

    Donc le problème est ailleurs.
    Il est probable que dans le classement par défaut de la base,
    'CRA' vienne après 'CR9' et donc ne puisse pas renvoyer de valeur.

    Pour tester, exécuter le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE #TEST (Champ varchar(50))
     
    INSERT INTO #Test values('CR9')
    INSERT INTO #Test values('CRA')
     
    SELECT * FROM #Test ORDER BY Champ
     
    DROP TABLE #Test
    Vous aurez certainement :
    Champ
    --------
    CR9
    CRA
    Du coup, si 'CR9' vient avant 'CRA' alors
    BETWEEN 'CRA' AND 'CR9' ne peut rien renvoyer
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Je me confonds en excuse BETWEEN n'est pas exclusif!
    C'est çà de répondre un dimanche matin :-)

    Bien sûr que le BETWEEN fonctionne sur les caractères je suis seulement choqué de son utilisation, résultat d'une modélisation souvent désastreuse (je suis payé à temps plein pour reprendre les applications "modélisées" par des développeurs qui sont tombées en prod...).
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Cela peut être une modélisation parfaitement correcte car elle répond en totalité à la forme normale domaine clef !
    J'avais hélas donné un exemples de cette forme normale sur wikipédia. malheureusement un crétin l'a supprimé.. Il s'agissait d'un exemples avec des véhicules et la catégorie des véhicules. De 0 à 3,5 T le véhicule est classé VL, au delà de 3.5 t le véhicule est classé PL. Il y a bien un domaine (une plage de valeur) pour une clef (la catégorie). C'est la forme normale Domaine clef et on la rencontre plus souvent qu'on ne le croit. Par exemple les tarifs d'affranchissement en sont un autre exemple.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Cela peut être une modélisation parfaitement correcte car elle répond en totalité à la forme normale domaine clef
    Nous sommes d'accord mais cela ne veux pas dire qu'elle soit optimale...

    modélisation SOUVENT désastreuse
    Vous êtes le mieux placé pour savoir que la modélisation est souvent laissée à des développeurs dont ce n'est pas le métier et qui ne sont pas très sensibles aux problématiques de montée en charge, de non redondance des données ETC.

    Heureusement on peut s'appuyer quotidiennement sur vos travaux pour les remettre dans le droit chemin

    A+
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Nous sommes d'accord mais cela ne veux pas dire qu'elle soit optimale...
    Justement si ! Une forme normale => modélisation optimale !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Bon, pour en revenir au problème qui turlupine philmot62,
    si c'est bien le classement qui lui joue un tour, voici une petite solution simple et pas chère qui règle la question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select * from xxx,yyy 
    where Champ1 between 
         CASE WHEN Debut<=Fin THEN Debut ELSE Fin END 
    and 
         CASE WHEN Debut>Fin THEN Debut ELSE Fin END
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Il suffit plus simplement de rajouter un COLLATE au bon endroit !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * 
    FROM xxx
           INNER JOIN yyy
                 ON ...
    WHERE Colonne1 COLLATE French_CI_AI BETWEEN Debut AND Fin
    Et pour apprendre le SQL, mon site web (http://sqlpro.developpez.com/cours/s...er/collations/), comme mon bouquin, peuvent vous être utiles !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    SQLpro, ton site est, certes, impressionnant, mais le COLLATE French_CI_AI ne résout pas le problème :

    On suppose que les deux tables xxx et yyy existent avec un classement quelconque.
    Si on essaye de changer le comportement du BETWEEN avec COLLATE French_CI_AI, il ne se passe rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE TABLE xxx (Champ1 varchar(10))
    INSERT INTO xxx values ('CRA')
    INSERT INTO xxx values ('CRB')
    INSERT INTO xxx values ('CRC')
    INSERT INTO xxx values ('CRD')
    INSERT INTO xxx values ('CR1')
    INSERT INTO xxx values ('CR2')
     
    CREATE TABLE yyy (Debut varchar(10), Fin varchar(10), Valeur varchar(10))
    INSERT INTO yyy values ('CRA', 'CR9', 'ABCD')
     
    -- ne renvoie rien :
    SELECT * FROM xxx,yyy 
    WHERE Champ1 COLLATE French_CI_AI BETWEEN Debut AND Fin
     
    -- petite bidouille qui fonctionne :
    SELECT * FROM xxx,yyy 
    WHERE Champ1 BETWEEN 
         CASE WHEN Debut<=Fin THEN Debut ELSE Fin END 
    AND 
         CASE WHEN Debut>Fin THEN Debut ELSE Fin END
     
     
    DROP TABLE xxx, yyy
    peut-être avec un autre COLLATE alors ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  11. #11
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,


    En effet, je ne sais pas quelle collation pour classer '1' > 'A'...

    Par contre, pour ta solution Nepumocene, je crains qu'elle ait des effets indésirables, par exemple, une recherche
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BETWEEN 'CRB' AND 'CR9'
    fera surement ressortir 'CRA'...

    Je pense que la solution est bien de créer une table contenant l'ordre voulu :
    ID | Code | Ordre

    et de faire une jointure dessus, puis filtrer avec le BETWEEN sur ordre !

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Ta bidouille est bonne, mais mélanger des lettres et des chiffres ne donne jamais rien de bon. Car a l'envers celle là ne marcherait pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    CREATE TABLE xxx (Champ1 varchar(10))
    INSERT INTO xxx VALUES ('CRA')
    INSERT INTO xxx VALUES ('CRB')
    INSERT INTO xxx VALUES ('CRC')
    INSERT INTO xxx VALUES ('CRD')
    INSERT INTO xxx VALUES ('CR1')
    INSERT INTO xxx VALUES ('CR2')
     
    CREATE TABLE yyy (Debut varchar(10), Fin varchar(10), Valeur varchar(10))
    INSERT INTO yyy VALUES ('AAA', '999', 'ABCD')
     
    -- ne renvoie rien :
    SELECT * FROM xxx,yyy 
    WHERE Champ1 COLLATE French_BIN BETWEEN Debut AND Fin
     
    -- petite bidouille qui fonctionne :
    SELECT * FROM xxx,yyy 
    WHERE Champ1 BETWEEN 
         CASE WHEN Debut<=Fin THEN Debut ELSE Fin END 
    AND 
         CASE WHEN Debut>Fin THEN Debut ELSE Fin END
    Le problème est que l'on ne peut pas redéfinir l'ordonnancement des caractères 1 à 1 !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  13. #13
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Dans cette bidouille, je m'en suis tenu strictement aux données du problème posé par philmot62.

    @aieeeuuuuu

    fera surement ressortir 'CRA'...
    C'est bien 'CRA' qui sort (philmot62 se plaint de n'avoir aucun résultat, là il a au moins quelque chose)

    Ta solution de créer une table de tri est évidement l'arme absolue.
    Cependant la colonne Ordre de ta table doit certainement être saisie "à la main",
    il ne faut pas que la liste des codes soit trop longue ...

    @SQLpro

    a l'envers celle là ne marcherait pas
    C'est inexact elle continue de fonctionner dans les deux cas :
    INSERT INTO yyy VALUES ('CRA', 'CR9', 'ABCD')
    ou bien
    INSERT INTO yyy VALUES ('CR9', 'CRA', 'ABCD')

    L'exemple avec
    INSERT INTO yyy VALUES ('AAA', '999', 'ABCD')
    ne peut jamais fonctionner car 'AAA' ou '999' sont toujours inférieurs aux valeurs de Champ1 de xxx.

    C'est intéressant comme discussion, je n'avais pas encore eu l'idée d'utiliser COLLATE "à la volée" dans une requête.

    Le problème est que l'on ne peut pas redéfinir l'ordonnancement des caractères 1 à 1
    En effet. Si on était vraiment dans ce cas de figure, il faudrait créer une table de classement avec une colonne ayant son propre classement par caractère composant le champ1 d'origine ...

    La solution est probablement avant la mise en exploitation de la base de données ; à savoir une bonne codification cohérente des données qui ne prête à aucune confusion.
    (Je ne sais pas si la base de philmot62 est réellement une base professionnelle ou s'il s'agit d'un test qu'il a fait sur un coin de table)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  14. #14
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    En effet, je ne sais pas quelle collation pour classer '1' > 'A'...
    L'auteur répond déjà à cette question :
    Citation Envoyé par philmot62 Voir le message
    Je pense qu'il s'agit d'un probleme ascii vs EBCDIC
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * FROM xxx,yyy 
    WHERE Champ1 BETWEEN Debut AND Fin collate SQL_EBCDIC037_CP1_CS_AS
     
    Champ1     Debut      Fin        Valeur
    ---------- ---------- ---------- ----------
    CRA        CRA        CR9        ABCD
    CRB        CRA        CR9        ABCD
    CRC        CRA        CR9        ABCD
    CRD        CRA        CR9        ABCD
    J'ai pris une des collations EBCDI au hasard parmi les huit disponibles sur SQL-Server 2005.

  15. #15
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Eh ben voilà ....

    et d'ailleurs, les deux syntaxes (Waldar, SQLpro) fonctionnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM xxx,yyy 
    WHERE Champ1 COLLATE SQL_EBCDIC037_CP1_CS_AS BETWEEN Debut AND Fin
     
    SELECT * FROM xxx,yyy 
    WHERE Champ1 BETWEEN Debut AND Fin COLLATE SQL_EBCDIC037_CP1_CS_AS
    Reste à savoir si c'est le résultat attendu par philmot62
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  16. #16
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Bien vu pour l'EBCDIC car originellement le jeu de caractères (profondement debile de IBM) mélange lettre et nombre dans le classement.
    En effet les lettres sont numérotés de 0 à 9 et les chiffres de A à F
    donc le classement est :
    ABCDEFGHIJ01234 KLMNOPQRST56789 UVWXYZ

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  17. #17
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    En effet les lettres sont numérotés de 0 à 9 et les chiffres de A à F


    "Pourquoi faire simple quand on peut faire compliqué"...

    J'en perds mon SQL_Latin1 (<== désolé, j'ai pas pu m'empecher )

    donc le classement est :
    ABCDEFGHIJ01234 KLMNOPQRST56789 UVWXYZ

    A +
    au passage, le script ci-dessous semble indiquer un classement différent quoiqu'aussi farfelu (mais chiffres et lettres ne sont pas mélangés) :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    WITH CTE as(
    	SELECT 1 AS num, CHAR(1) COLLATE SQL_EBCDIC285_CP1_CS_AS AS car
    	UNION ALL
    	SELECT num + 1 , CHAR(num + 1) COLLATE SQL_EBCDIC285_CP1_CS_AS 
    	FROM cte
    	WHERE num < 255
    	)
    SELECT car
    FROM cte
    ORDER BY  car
    OPTION (MAXRECURSION 0)

    ==>
    a,b,c,d,e,f,g,h,i,«,»,ð,ý,þ,±,°,j,k,l,m,n,o,p,q,r,ª,º,æ,‚,Æ,¤,µ,˜,s,t,u,v,w,x,y,z,¡,¿,Ð,Ý,Þ,®,¢,[,¥,·,©,§,¶,¼,½,¾,ˆ,],¯,¨,´,×,{,A,B,C,D,E,F,G,H,I,*,ô,ö,ò,ó,õ,},J,K,L,M,N,O,P,Q,R,¹,û,ü,ù,ú,ÿ,\,÷,S,T,U,V,W,X,Y,Z,²,Ô,Ö,Ò,Ó,Õ,0,1,2,3,4,5,6,7,8,9,³,Û,Ü,Ù,Ú

  18. #18
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Ca dépend de la version de EBCDIC !!!
    Mais la première (IBM 360) c'était ça !!!!!!!!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  19. #19
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Ca dépend de la version de EBCDIC !!!
    ha oui... car c'était trop simple sinon

    et re

    et bon courage à philmot62 !

Discussions similaires

  1. SQL, Problème avec Between
    Par Heallidan dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/01/2012, 10h35
  2. Problème avec BETWEEN
    Par perchman dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/10/2010, 16h44
  3. problème avec between date
    Par jeanpierre215 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/09/2010, 17h58
  4. problème avec between
    Par Paula15 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/09/2010, 14h33
  5. Problème avec Between dans un code
    Par Sendo dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo