6
votes

MS SQL Utilisez comme relevé un relevé

declare @d varchar
set @d = 'No filter'

if (@d like 'No filter')
  BEGIN
    select 'matched'
  end
else
  begin
    select 'not matched'
  end
the result of above is always not matched can anybody tell me why and how can I use the like or '=' result in my stored procedure.
thanks

0 commentaires

3 Réponses :


4
votes

Vous devez déclarer d comme varchar (100) non seulement varchar, sinon cela devient simplement n xxx

devrait être: xxx

Aussi pas besoin d'utiliser comme avec cela, vous pouvez utiliser =.


2 commentaires

Ajouter Imprimer @D ou Sélectionnez @D pour prouver cela à vous-même.


+1: correct - c'est une bonne habitude de définir toujours des attributs de type de données que d'assumer les valeurs par défaut.



6
votes

Changer votre déclaration à

declare @d varchar(10)
set @d = 'No filter' 

if (@d = 'No filter') 
  BEGIN 
    select 'matched' 
  end 
else 
  begin 
    select 'not matched' 
  end


0 commentaires

0
votes

Je trouve comme l'opérateur très utile.

si ( @Pli_component = '' + @itemid + '' + 'BD' Ou @pli_component = '' + @itemid + '' + 'BD / 1' Ou @pli_component = '' + @itemid + '' + 'bd / 2' Ou @pli_component = '' + @itemid + '' + 'BD / 3'
Ou @pli_component = '' + @itemid + '' + 'BD / 4'
Ou @pli_component = '' + @itemid + '' + 'BD / 5'

)

peut être remplacé

par une seule ligne qui est

@pli_component comme @itemid + 'BD'

acclamations


0 commentaires