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

MS SQL Server Discussion :

Comment tronquer un champ?


Sujet :

MS SQL Server

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut Comment tronquer un champ?
    Bonjour à tous,

    Voila j'ai un champ qui est de type varchar et de la forme "DateDuJour - NuméroIncrémenté", plus précisément : voici des exemples du champ.
    EXEMPLE :
    10/10/2008-001
    15/12/2008-002
    12/20/2008-003

    Et lorsque je fais la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX(NumIntervention) 
    FROM INTERVENTION;
    il m'affiche "12/12/2008-002" en tant que max, mais je souhaiterais qu'il m'affiche le plus grand au niveau du numéro(001, 002... sont des numéro qui s'incrémente tout seul)et non de la Date c'est à dire qu'il devrais m'afficher "12/20/2008-003".
    Je sait et je pense qu'il existe sous Sql Server 2000 une fonction pour tronquer un champ mais laquel?? et de quel manière elle s'utilise??

    Merci d'avance!!

  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 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Vous n'auriez JAMAIS du mélanger deux information dans la même colonne. En faisant cela vous violez la première forme normale... Ce n'est plus une base de données que vous manipulez, mais un fichier style Cobol...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1FN - première forme normale :
        * tout attribut contient une valeur atomique
        * tous les attributs sont non répétitifs
        * tous les attributs sont constants dans le temps.
    http://fr.wikipedia.org/wiki/Forme_n...ationnelles%29
    Décomposez votre colonne en deux et votre problème sera réglé !

    Utilisez une vue pour la recomposition.

    Sinon, si vous voulez conserver une base de données anormale avec tous les problèmes que cela va engendrer, amusez vous avec la fonction SUBSTRING.

    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
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut réponse à SQLpro
    Je sais bien que c'est pas bien mais le champ NumInter est de la forme "DateJour - NomIncrémenté" car pour l'entreprise pour qui je fais cela c'est comme cela qui veule identifier leur intervention.

    Quel problème cela peut-il engendrer??

    Je viens d'aller voir sur une page que tu a créé il me semble qui me dit que SUBSTRING n'est pas utilisable sous SQL SERVER 2000.

    Merci d'avance

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Par défaut
    Quel problème cela peut-il engendrer??
    Et bien, très précisement ce qui te bloque aujourd'hui ! A savoir la grande difficulté que tu as à présent pour manipuler tes numéros d'intervention et tes dates de façon distincte.

    Le fait que tes utilisateurs aient besoin de voir leur données sous la forme DateJour - NomIncrémenté est légitime mais cela ne signifie pas qu'ils t'imposent une colonne de cette nature dans ta table.

    Comme on te l'a suggeré, le plus simple est de passer par une vue avec une colonne concaténée DateJour + NomIncrémenté

    Je viens d'aller voir sur une page que tu a créé il me semble qui me dit que SUBSTRING n'est pas utilisable sous SQL SERVER 2000.
    Cette fonction est complètement utilisable, rassures toi. Elle est même reconnue par la norme ANSI si je ne m'abuse.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut réponse à Erwan1978
    Oui j'ai réussit en fin de compte avec la fonction "SUBSTRING"
    Ben je vais voir pour c eproblème de FN!!

    merci beaucoup!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2004, 10h50
  2. Comment voir les champs créés dans les tables?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/02/2004, 10h27
  3. Comment renommer un champ avec Module BD?
    Par technico dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/01/2004, 21h24
  4. [CR] Comment trouver un champs dans un report ??
    Par Madduck dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 18/09/2003, 08h31
  5. [langage] Comment rajouter des champs dans une liste
    Par toto_titi dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2003, 14h09

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