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 :

Interprétation du moteur SQL Server au niveau du typage des données


Sujet :

Développement SQL Server

  1. #1
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut Interprétation du moteur SQL Server au niveau du typage des données
    La question est très simple, la réponse sûrement également mais je ne l'ai pas trouvée.

    Définissons une table toute simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE T1 ( SITE VARCHAR(100), CODE1 CHAR(3),  CODE2 INT)
    Ajoutons lui une valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO T1 (SITE, CODE1, CODE2) VALUES ('PARIS', '001', 1)
    Et posons lui la petite requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SITE FROM T1 WHERE CODE1=1
    Réponse : 'PARIS' !
    Je me serais attendu à null !

    Même chose avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SITE FROM T1 WHERE CODE2='001'
    Donc le moteur SQL Server peut interpréter des chaînes en entier et inversement. Pourriez-Vous éclairer un peu ma pauvre lanterne sur ce comportement qui me paraît bizarre ? J'imagine qu'il existe un paramètre pour le régler ?
    Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    C'est normal et cela a été montré et même exigé par Chris Date dans les années 80, au tout début des SGBD Relationnel.
    C'est d'ailleurs une de mes requêtes introductive dans tous les cours que je donne en école d'ingé ou en entreprise via Orsys...

    En effet, l'important c'est la question que vous posez (la sémantique) et non la façon dont vous la posez (grammaire).

    La plupart des informaticiens sont attaché à la grammaire, c'est a dire au respect absolu des types de données.
    Mais en matière de requête (requête voulant dire "demande") l'important c'est le sens de ce que vous demandez et non pas la façon de l'écrire.

    Extrait de mon prochain livre à paraître sur SQL :

    Nom : SQL-Frederic-Brouard-extrait-semantique p89.jpg
Affichages : 123
Taille : 115,4 Ko

    Nom : SQL-Frederic-Brouard-extrait-semantique p90.jpg
Affichages : 118
Taille : 207,3 Ko

    Nom : SQL-Frederic-Brouard-extrait-semantique p91.jpg
Affichages : 125
Taille : 287,4 Ko

    Nom : SQL-Frederic-Brouard-extrait-semantique p92.jpg
Affichages : 126
Taille : 98,0 Ko


    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/ * * * * *

  3. #3
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    La mode est au trans...typage !
    Merci pour cette réponse détaillée.
    Je comprends bien le concept sous-jacent, qui vise à donner le plus d'agilité et de degré de liberté possible au moteur SQL : on pose la question et il fait sa petite cuisine comme il l'entend pour nous répondre.
    Mais est-ce que dans les faits, mélanger les types ainsi, cela a une utilité pratique ? Personnellement, je me suis aperçu par "accident", et à vrai dire je ne vois pas dans quel cas cela pourrait m'être utile .

    Et autre question : pourrais-tu nous en dire un peu plus sur ton prochain livre ? Le titre m'intrigue : "le langage SQL : théorie et pratique".
    Encore merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par FMJ Voir le message
    ...
    Je comprends bien le concept sous-jacent, qui vise à donner le plus d'agilité et de degré de liberté possible au moteur SQL : on pose la question et il fait sa petite cuisine comme il l'entend pour nous répondre.
    En gros oui...

    Mais est-ce que dans les faits, mélanger les types ainsi, cela a une utilité pratique ? Personnellement, je me suis aperçu par "accident", et à vrai dire je ne vois pas dans quel cas cela pourrait m'être utile .
    Parce que tu penses en informaticien obsédé par le code, les types de données, etc. penses tu que madame Michu qui écrit ses propres requêtes (par exemple en temps que contrôleur de gestion) soit au courant des types des données de SQL ?
    Et autre question : pourrais-tu nous en dire un peu plus sur ton prochain livre ? Le titre m'intrigue : "le langage SQL : théorie et pratique".
    Encore merci
    pas avant quelques années, parce que j'ai trop de boulot !

    J'ai déjà écrit 1 chapitre 3/4

    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/ * * * * *

  5. #5
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    parce que tu penses en informaticien obsédé par le code, les types de données, etc.
    obsédé, peut-être pas mais formaté oui c'est sûr !
    Bon courage pour la rédaction de cet ouvrage (vu sa pagination, je pensais qu'il était sur e point d'être édité !)

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par FMJ Voir le message
    obsédé, peut-être pas mais formaté oui c'est sûr !
    Bon courage pour la rédaction de cet ouvrage (vu sa pagination, je pensais qu'il était sur e point d'être édité !)
    Il devrait faire dans les 2 000 pages....

    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/ * * * * *

  7. #7
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    Alors ce n'est pas du courage qu'il va falloir mais de la persévérance ! Voire une ténacité sans borne !

  8. #8
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    En fait, j'avais mal cherché, la doc officielle parle bien de cette conversion implicite :
    https://docs.microsoft.com/fr-fr/sql...cit-conversion

  9. #9
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    .....

  10. #10
    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 FMJ Voir le message
    Si l'on fait une requête de concaténation SELECT A+B, pour cette ligne on obtiendra le résultat surprenant 100 et non le '0199' attendu !!
    Heu non ! si les colonnes sont en varchar... on obtiendra '0199'

  11. #11
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    Rouge de honte mon message a été effacé (erreur de définition de table ... Ca m'apprendra à poster trop vite !)

  12. #12
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    La question ne se poserait pas si SQL Server n'utilisait pas l'opérateur d'addition + au lieu de l'opérateur normalisé || pour la concaténation.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  13. #13
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    Oui c'est pas faux. Distinguer l'opération d'addition des nombre et l'opérateur de concaténation ne serait pas déconnant ! C'est généralement ce qui se fait dans les autres langages, dont chez Oracle comme tu le précises.

  14. #14
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Citation Envoyé par FMJ Voir le message
    Oui c'est pas faux. Distinguer l'opération d'addition des nombre et l'opérateur de concaténation ne serait pas déconnant ! C'est généralement ce qui se fait dans les autres langages, dont chez Oracle comme tu le précises.
    Dans le doute, on peut choisir d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONCAT ( string_value1, string_value2 [, string_valueN ] )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaître besoins mémoire du moteur SQL Server
    Par Blacknounou dans le forum Administration
    Réponses: 2
    Dernier message: 19/02/2014, 15h02
  2. Réponses: 1
    Dernier message: 01/04/2011, 14h04
  3. Synchronisation SSAS et Moteur Sql Server 2005
    Par ygrim dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/12/2007, 16h26
  4. Composant Calendrier - moteur SQL server
    Par Brunier dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/07/2006, 08h48
  5. [SQL server][TDbRichEdit] Mise à jours base de donnée
    Par Revan012 dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/06/2004, 12h12

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