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 :

comparaison d'un champ text


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 54
    Par défaut comparaison d'un champ text
    Bonjour tout le monde voila je me heurte a un gros probleme

    comment fait on pour comparer un champ texte, actuellement j'ai essayé de le caster en varchar mais sans succès et lorsque je fais une comparaison entre un champ text et un var char voici l'erreur qu'il me sort :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg 306, Level 16, State 1, Line 1
    The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
    je vous remercie d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    Bonjour, voici le code (très laid, j'en conviens) que j'ai fait pour détecter des changements dans des Terms of Services qui sont stockés sous forme de ntext. Il faut en effet créer des cellules et les comparer une à une.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    DECLARE	@PROC_STATUS		smallint,
    		@END 				bit,
    		@CELL_1				nvarchar(4000),
    		@CELL_2				nvarchar(4000),
    		@OFFSET				int,
    		@RESULT				varchar(20),
    		@SERVICE_INFO_ID	int,
    		@LIMITER			int,
    		@TIME				datetime
     
    DECLARE curTOS CURSOR FAST_FORWARD FOR
        	SELECT 	SERVICE_INFO_ID
        	FROM   	SERVICE_INFO
     
    OPEN curTOS
    FETCH NEXT FROM curTOS INTO @SERVICE_INFO_ID
     
    WHILE @@FETCH_STATUS = 0
    	BEGIN
    		---
    		SET @LIMITER = 1
    		SET @END = 0
    		SET @RESULT = ''
    		SET	@OFFSET = 1
     
    		WHILE @END <> 1 AND @LIMITER < 1000 --ARBITRARY LOOP LIMIT TO PREVENT ERROR
    			BEGIN
    				SELECT 	@CELL_1 = SUBSTRING(CONTENT, @OFFSET, 4000)
    				FROM	SERVICE_INFO
    				WHERE	SERVICE_INFO_ID = @SERVICE_INFO_ID
     
    				SELECT 	@CELL_2 = SUBSTRING(CONTENT, @OFFSET, 4000)
    				FROM	SERVICE_INFO_CHANGES_TRACKING
    				WHERE	SERVICE_INFO_ID = @SERVICE_INFO_ID
     
    				IF @CELL_1 <> @CELL_2 AND LEN(@CELL_2) > 0
    					BEGIN
    						SET @END = 1
    						SET @RESULT = 'DIFFERENT'
    					END
     
    				IF @END = 0
    					BEGIN
    						SET @OFFSET = @OFFSET + 4000
    					END
     
    				IF LEN(@CELL_1) = 0 AND @END = 0
    					BEGIN
    						SET @RESULT = 'SAME'
    						SET @END = 1
    					END
    			SET @LIMITER = @LIMITER + 1
     
    			END
     
    		IF @RESULT = 'SAME'
    			BEGIN
    				UPDATE SERVICE_INFO_CHANGES_TRACKING
    				SET LAST_CHECKED 	= @TIME,
    					DIFFERENT 		= 0
    				WHERE	SERVICE_INFO_ID = @SERVICE_INFO_ID	
    			END
    		ELSE
    			BEGIN
    				UPDATE SERVICE_INFO_CHANGES_TRACKING
    				SET LAST_CHECKED 	= @TIME,
    					DIFFERENT 		= 1
    				WHERE	SERVICE_INFO_ID = @SERVICE_INFO_ID
    			END
    		---
    		    FETCH NEXT FROM curTOS INTO @SERVICE_INFO_ID
    	END
     
    CLOSE curTOS
    DEALLOCATE curTOS

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Par défaut
    Bonjour,

    vous pouvez essayer avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substring(textfield,longueur)
    mais la comparaison sera bien sûr partielle.

    Pourquoi comparer des champs text ????? Il vaudrait mieux utiliser du varchar pour ça ...

Discussions similaires

  1. [AC-2007] Comparaison de 2 champs textes de 2 formulaires
    Par Lyysis dans le forum IHM
    Réponses: 7
    Dernier message: 20/07/2013, 22h58
  2. Réponses: 4
    Dernier message: 04/06/2008, 13h12
  3. impossible de faire une comparaison de champ texte
    Par ronki dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/04/2008, 15h11
  4. [Access2003/SQLserver2000]Comparaison entre des dates (champs texte)
    Par hoaxpunk dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/06/2007, 13h21
  5. Réponses: 17
    Dernier message: 02/03/2007, 09h46

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