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 :

sql 2000 réatribution de donnée


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut sql 2000 réatribution de donnée
    Bonjour,
    Voila j’importe une base de donnée .csv dans une table dans sql serveur 2000
    Dans mon.csv il y a une colonne « photo » ou sont mis en vrac le nom des photos correspondant au match « base de donnée club de rugby » toute ces photo sont séparer par un pipe elles sont aussi nommé de de façon unique ex :
    Pour l’id 123 dans la colonne photo j’aurai 123_1.jpg | 123_2.jpg |123_3.jpg
    J’aimerai via une commande sous sql pouvoir réattribuer c’est nom dans des colonnes spécifique
    Ex pour l’id 123
    Photo1 photo2 photo 3
    123_1.jpg 123_2.jpg 123_3.jpg

    Merci si vous avez une astuce

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Si tes noms d'images sont dans une colonne d'une table, tu peux faire le select avec ces outils :

    CHARINDEX('|', col, n) : te donne la position de l'occurence de '|' dans col.

    SUBSTRING(col, m, n) : te donne la sous chaîne de col à partir du caractère d'indice m, d'une longueur de n caractères

    Donc par exemple,
    SELECT SUBSTRING(col, 1, CHARINDEX('|', col, 1) - 1)
    FROM TABLE

    devrait te renvoyer ta première photo (à peu près).

    SELECT SUBSTRING(Col, CHARINDEX('|', col, 1) + 1, CHARINDEX('|', col, CHARINDEX('|', col, 1)) - CHARINDEX('|', col, 1))
    FROM TABLE

    devrait te renvoyer ta deuxième photo (à peu près)

    ...

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    cool
    merci je vais essayer

  4. #4
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    voila finalement j ai resolu le probleme
    avec une fontion en asp qui est bien foutu :
    vla le code si sa interesse quelqun on ne sait jammais :
    ---------------------------------------------------------------------
    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
    33
     
    Dim WC , Pos
       If VarType(S) <> 8 Or Len(S) = 0 Then
         CountCSWords = 0
         Exit Function
       End If
       WC = 1
       Pos = InStr(S, "|")
       Do While Pos > 0
         WC = WC + 1
         Pos = InStr(Pos + 1, S, "|")
       Loop
       CountCSWords = WC
    End Function
     
    Function GetCSWord(ByVal S, Indx)
    ' Returns the nth word in a specific field.
     
    Dim WC, SPos , EPos
       WC = CountCSWords(S)
       If Indx < 1 Or Indx > WC Then
         GetCSWord = Null
         Exit Function
       End If
       Count = 1
       SPos = 1
       For Count = 2 To Indx
         SPos = InStr(SPos, S, "|") + 1
       Next
       EPos = InStr(SPos, S, "|") - 1
       If EPos <= 0 Then EPos = Len(S)
       GetCSWord = Trim(Mid(S, SPos, EPos - SPos + 1))
    End Function
    on l'appele apres via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GetCSWord([strphotosource],1) pour la premiere photo
    GetCSWord([strphotosource],2) pour la deuxieme ....
    merci pour m'avoir mis sur la voie

  5. #5
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Aaaah, tu voulais le faire par code !
    Dans ce cas, dans les langages, tu as toujours des fonctions de ce genre.
    En VB, split:
    Dim s as string = "a|b|c"
    Dim res as string()
    res = s.split(CChar("|"))

    ça te donne :
    res.length => 3
    res(0) => "a"
    res(1) => "b"
    res(2) => "c"

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

Discussions similaires

  1. [SQL Server 2000] Export de données
    Par Shogun dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/10/2007, 13h23
  2. Sauvegarde base de données SQL 2000
    Par fredjl dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/09/2007, 09h52
  3. augmenter la taille d'une base de données sql 2000
    Par ramizakaria dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2007, 09h57
  4. Réponses: 3
    Dernier message: 20/12/2006, 17h12
  5. [SQL 2000] Question sur les types de données
    Par Angath dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/11/2006, 14h05

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