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 :

Procédure qui peut lire les espaces


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Points : 21
    Points
    21
    Par défaut Procédure qui peut lire les espaces
    Bonjour,

    J'ai un petit soucis comme vous pouvez vous en douter.

    Je cherche à faire en sorte que quand je rentre du texte ma procédure stockée puisse lire "azerty " et non "azerty".

    Voici le code:

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    USE [DB_CrossRefV3_test]
    GO
    /****** Object:  StoredProcedure [dbo].[ps_decoupeRef]    Script Date: 01/07/2014 09:11:22 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:	<Description,,>
    -- =============================================
    ALTER PROCEDURE [dbo].[ps_decoupeRef] 
    	-- Add the parameters for the stored procedure here
    	 @idConcurrent integer,
    	 @idFamille integer,
         @refConcurrent nvarchar(50)     
    AS
    BEGIN
    	declare @tailleRef integer=len(@refConcurrent)
    	declare @index integer=1
    	declare @maxParam integer
     
    	declare @decoupRef table
    	(
    		codeConcurrent integer,
    		codeFamille integer,
    		codeParam integer,
    		ordre integer,
    		nomParam nvarchar(150),
    		idValeur integer,
    		valeurParam nvarchar(10)
    	)
     
     
    	declare @i integer
    	select @i=COUNT(1)
    	from FamilleConcurrent 
    	where idFamille =@idFamille
    	and codeConcurrent =@idConcurrent 
     
    	--si le concurrent fait cette famille la
     
    	if @i>0
    	begin
     
    		Select @maxParam=max(Ordre)
    		from CompoRefConcurrent 
    		where CodeConcurrent = @idConcurrent
    		and idFamille =@idFamille 
     
    		declare parcour cursor 
    		for 
    		Select idComposante ,Ordre,nomComposante ,[Min],[Max]  
    		from CompoRefConcurrent
    		where CodeConcurrent = @idConcurrent
    		and idFamille =@idFamille 
    		order by ordre
     
    		declare @codeParam integer
    		declare @ordre integer
    		declare @nomParam nvarchar(150)
    		declare @min integer
    		declare @max integer
     
    		open parcour
     
    		fetch parcour into @codeParam,@ordre,@nomParam,@min,@max
     
    		while @@FETCH_STATUS = 0
    		begin	
     
    			declare @boutRef nvarchar(10)=''
     
    			--si c'est le dernier bout de ref on prend le reste
    			if @ordre =@maxParam 
    			begin
    				set @boutRef = substring(@refConcurrent,@index,(@tailleRef-@index)+1)
    				set @index =@index + (@tailleRef-@index)+1 
    			end
    			else
    			begin
     
    				if @min=@max 
    				begin					
    					set @boutRef = substring(@refConcurrent,@index,@min)
    					set @index =@index + @min 
    				end
    				else
    				begin
     
    					declare @count integer=0
     
    					if @max-@min=1
    					begin
    						select @count=count(ValeurConcurrent)
    						from ValeurConcurrent 
    						where idComposante =@codeParam 				
    						and ValeurConcurrent = substring(@refConcurrent,@index,@max)
     
    						if @count>0
    						begin						
    							set @boutRef = substring(@refConcurrent,@index,@max)
    							set @index =@index + @max 
    						end
    						else
    						begin
    							set @boutRef = substring(@refConcurrent,@index,@min)
    							set @index =@index + @min 
    						end
     
    					end
    					else
    					begin 
    						declare @j integer=@max				
     
    						while @j>=@min and @count != 1
    						begin									
    							select @count=count(ValeurConcurrent)
    							from ValeurConcurrent 
    							where idComposante =@codeParam 				
    							and ValeurConcurrent = substring(@refConcurrent,@index,@j)
     
    							if @COUNT !=1
    								set @j=@j-1
    						end
     
    						if @count=1
    						begin
    							set @boutRef = substring(@refConcurrent,@index,@j)
    							set @index =@index + @j 
    						end
    					end				
    				end
    			end
     
    			declare @idValeur integer=0
     
    			select @idValeur=idValeurConcurrent
    			from ValeurConcurrent 
    			where valeurConcurrent =@boutRef 
    			and idComposante =@codeParam 
     
     
    			insert into @decoupRef 
    			values (@idConcurrent,@idFamille ,@codeParam,@ordre,@nomParam,@idValeur ,@boutRef)
     
    			fetch parcour into @codeParam,@ordre,@nomParam,@min,@max
    		end
     
    		select * from @decoupRef 
     
    		close parcour 
    		deallocate parcour
    	end
    end
    Je vous remercie d'avance de votre aide.

    Cordialement,
    Dartounet.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Quand vous "rentrez du texte" où ?

    Quel est le problème exactement ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Je rentre du texte dans une application faite sous visual studio ASP.NET/VB.NET.

    En fait je dois crosser des références produits d'une entreprise concurrente et trouver la référence de mon entreprise qui correspond.

    Donc si je met la référence concurrente "BKAD112030001" dans mon champ, elle ne sera pas trouvée car il faudrait que ça soit "BKAD112030001 " pour trouver la référence de mon entreprise car l'espace serait un bout de ma référence. Je ne sais pas si je suis clair dans mon explication

    Je peux vous donner ma page et son code sous visual studio ainsi que les procédures stockées qui vont avec mais ça va faire beaucoup de code.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Si vous insérez avec l'espace dans votre base, elle sera prise en compte.

    Par ailleurs, lorsque vous ferez une comparaison, l'espace en fin de chaine ne posera pas de problème, puisque lors d'une comparaison de deux chaines de caractères en SQL, la chaine la plus courte est complétée par des espace à la fin avant comparaison, et donc 'BKAD112030001 ' = 'BKAD112030001'

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    Je pense que je me suis très mal exprimé ^^'

    En fait je décompose la référence en morceau car chaque morceau à une correspondance. Par Exemple: BKA D 1 120 3 00 01 FO correspondra à
    SB6 1 1 M G 05 00 P 00 01

    Mais BKA D 1 120 3 00 01 " " a aussi une correspondance sauf qu'il faut que j'arrive à "lire" mon caractère " " pour lui donner une correspondance.

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Ce que je ne comprend pas, c'est pourquoi vous n'arrivez pas à "lire" le dernier caractère...

    Le mieux serait de poster les DDL des tables, et un jeu d'essai + résultat attendu. tout serait beaucoup plus clair. Je pense que le problème vient plutôt de votre traitement dans votre sp...

Discussions similaires

  1. Microsoft peut lire les e-mails de ses clients
    Par ASTICun dans le forum Sécurité
    Réponses: 5
    Dernier message: 24/03/2014, 15h48
  2. Faire croire à un serveur html qu'on peut lire les frames
    Par esteban dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 25/03/2009, 17h40
  3. [AJAX] N'importe qui peut voir les données de mon fichier XML
    Par KoosMos dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 30/11/2007, 11h48
  4. Ce qui peut intéresser les freenautes
    Par Poulain dans le forum Dépannage et Assistance
    Réponses: 7
    Dernier message: 01/12/2006, 16h40
  5. Est-ce que Windows XP peut lire les fichiers ADPCM ?
    Par beegees dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/11/2006, 23h52

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