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 :

Découper une colonne en Quatre


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Par défaut Découper une colonne en Quatre
    Bonjour,

    j'ai une table avec deux colonnes,
    lorsque que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM DATA
    j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    COL1         COL2
    1010         630.645.356.1024
    1020         630.660.658.1046
    1325         1055.2556.2020.1999
    1412         1405.265.864.2045
    je voudrais au final grace au '.' de la COL2 depuis un select avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1010    630    645    356    1024
    1020    630    660    658    1046
    1325    1055   2556   2020   1999
    1412    1405   265    864    2045
    Le savoir n'est rien sans celui des autres !

  2. #2
    Membre chevronné
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Par défaut
    Bonjour,

    Essaye ceci

    select substring(col,1,charindex('.',col)-1) as col1,
    substring(col,charindex('.',col,charindex('.',col))+1,charindex('.',col,charindex('.',col)+1)-(charindex ('.',col))-1) as col2,
    substring(col,charindex('.',col,charindex('.',col)+1)+1,charindex('.',col,charindex('.',col)+1)-(charindex ('.',col)+1)-1) as col3
    from matable

    A+

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    La réponse ci-dessus ne marche pas (tester sur jeu de test)

    J'ai plus simple
    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
    25
    26
    27
    28
    29
    30
    31
    32
     
    select 	Col1, 
    	left(COL2,patIndex('%.%',COL2 )-1 ),
    	LEFT(SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)),patIndex('%.%',SUBSTRING(COL2, patIndex('%.%',COL2 )+1,Len(COL2)) )-1
    	),
    	LEFT(
    		SUBSTRING(
    				SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)), 
    				patIndex('%.%',SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)) )+1,
    				Len(SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)))
    			),
    		patIndex('%.%',SUBSTRING(
    				SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)), 
    				patIndex('%.%',SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)) )+1
    		,Len(SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)))) )
    	-1)
    	,
    	RIGHT(
    		SUBSTRING(
    				SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)), 
    				patIndex('%.%',SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)) )+1,
    				Len(SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)))
    			 )
    	     ,
    		patIndex('%.%',REVERSE(SUBSTRING(
    				SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)), 
    				patIndex('%.%',SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)) )+1
    		,Len(SUBSTRING(	COL2,patIndex('%.%',COL2 )+1,Len(COL2)))) ))
     
    		-1)
     
    from DATA
    Ne marche évidemment qu'avec des données contenant 3 "."
    Noter le reverse pour la derniere colonne

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Je vois que vous vous amusez bien

    Pour l'avenir : faire quatre colonnes int différentes, pour se conformer à la première forme normale... et éviter tous ces problèmes.
    Pour visualiser le même résultat que la colonne existante : une colonne calculée.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    Citation Envoyé par rudib
    Bonjour,

    Je vois que vous vous amusez bien

    Pour l'avenir : faire quatre colonnes int différentes, pour se conformer à la première forme normale... et éviter tous ces problèmes.
    Pour visualiser le même résultat que la colonne existante : une colonne calculée.
    le soucis de notre ami resemble quand même à dechiffrer des données brutes qui viennent de qqpart dont il n'est pas le reponsable...

  6. #6
    Membre confirmé Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Par défaut
    c'est quand même assez lourd, le problème de SQL SERVER c'est qu'il ne sais pas réutiliser les alias dans les Select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Select id_level,
    substring(id_level,1,charindex('.',id_level)-1) as COL1
    len(COL1)
    substring(id_level,len(COL1),charindex('.',id_level))
    from DATA
     
    SQL SERVER : COL1 nom de colonne inconnu

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

Discussions similaires

  1. Utilisation des tableaux, ne récupère qu'une colonne sur quatre
    Par titi20133 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/10/2014, 23h47
  2. Fonction pour découper une matrice colonne
    Par Redak2010 dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/07/2013, 15h36
  3. [Split]Découper une colonne
    Par la_fouine1806 dans le forum Développement
    Réponses: 3
    Dernier message: 23/03/2010, 13h51
  4. [TDrawGrid]Comment afficher une colonne sur quatre ?
    Par Laurent Dardenne dans le forum Composants VCL
    Réponses: 5
    Dernier message: 11/02/2006, 16h42

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