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 :

Split sur une variable de type TEXT (vs nvarchar)


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Par défaut Split sur une variable de type TEXT (vs nvarchar)
    Bonjour,
    J'essaye de faire un split sur un text mais ca ne marche pas ce code que j'ai ecris pour un type nvarchar ne fonctionne pas sur un type TEXT ce qui normal mais je ne vois d'ou ca vient, voici le code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Begin
    Declare @Cnt int
    Declare @Text nvarchar(100)
    SET @Text = '9999:2222:3333:4444:5555'
    SET @Cnt = 1
    While (Charindex(':',@Text) > 0) -- tant qu'il ya des positions de ':'
    begin
    print ltrim(rtrim(Substring(@Text,1,(charindex(':',@Text)-1))))
    set @Text = substring(@Text,Charindex(':',@Text)+1,datalength(@Text))
    Set @Cnt = @Cnt + 1
    end
    print ltrim(rtrim(@Text)) 
    end
    Quand je change le type en TEXT, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Server: Msg 2739, Level 16, State 1, Line 2
    The text, ntext, and image data types are invalid for local variables.
    malgré que je change la fonction len en datalength comme j'ai dans plusieurs exemple par rapport au parsing d'un text cvs mais je ne vois toujours pas le probleme.
    Peut etre je dois faire un convert ?

    Je vous remercie d'avance de votre aide.
    AA

  2. #2
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Par défaut
    Ce marche pour moi!

  3. #3
    Membre confirmé Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Par défaut
    oui le code que j'ai posté fonctionne avec "Declare @Text nvarchar(100)"
    mais mon souci c'est de remplacer Declare @Text nvarchar(100) par Declare @Text TEXT

    donc c'est le changement de type qui me pose probleme

    Merci encore.

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonsoir,

    Il n'est effectivement pas possible de déclarer une variable de type TEXT, parce que c'est un LOB. Vous pouvez en revanche l'utiliser dans les colonnes

    Vous pouvez cependant déclarer une variable de type VARCHAR(MAX) ou NVARCHAR(MAX) qui vous autorisera à stocker respectivement 2.147.483.647 et 1 073 741 823 de caractères

  5. #5
    Membre confirmé Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Par défaut
    Bonsoir,

    Et bien au fait, c'est pas que je veux pas le faire avec varchar (la preuve que j'ai fait quelques qui fonctionne) mais la contrainte au niveau du shema ne m'autorise pas de faire un autre choix.
    Je pose le problème autrement, comment puis je travailler sur une varibale de type TEXT pour pouvoir faire des split selon un Delimitor, en gros c'est une fonction qui prend un texte (type TEXT) et un délimiteur (char(1)) en paramètres qui renvoie une table de mots.

    voila

    Je vous remercie tous.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Par défaut
    Bonjour,

    je travaille sous SQL Server 2000 et j'ai été confronté à ce type de problème. Il me semble qu'au niveau des procédures stockées SQL Server, on a la possibilité de passer une variable de type TEXT en entrée d'une PS.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE PROCEDURE USP_SPLIT
    @TEXTE_ENTREE TEXT,
    @SEPARATEUR CHAR(1)
     
    AS 
    -- Code de traitement 
     
     
    GO
    Dans mon cas cela fonctionne, après je ne sais pas si cette méthode est recommandée.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/03/2011, 08h55
  2. Précision sur une variable de type Number
    Par Proggies dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 29/05/2010, 19h08
  3. ré-initialiser un identity sur une variable de type table
    Par laurent-devel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 31/03/2008, 19h39
  4. Réponses: 6
    Dernier message: 14/02/2007, 21h08
  5. Boucle sur une variable de type "heure"
    Par Charles25 dans le forum ASP
    Réponses: 3
    Dernier message: 15/11/2006, 17h51

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