2010-04-21 8 views

Répondre

2

ne sais pas ... fonctionne pour moi

declare @name varchar(45) 

set @name = 'johnson' 

IF(@name LIKE '%John%') 
BEGIN 
    print 'like' 
END 
ELSE 
BEGIN 
    print 'dislike' 
END 
+0

Aha! Mon problème était que j'ai déclaré la variable comme un varchar simple, pas varchar avec une longueur comme vous l'avez fait. Merci! – user322652

+0

Je vais marquer cela comme une réponse une fois que mon compte me le permet. (Je suis tout nouveau ici) – user322652

+1

@ user322652 - oui, vous devez faire attention à toujours donner une taille. Dans ce scénario, il serait par défaut à 1. Dans d'autres scénarios, la longueur si non définie serait 30! (J'ai écrit à ce sujet récemment si vous êtes intéressé: http://www.adathedev.co.uk/2010/04/sql-cast-to-varchar-without-size.html) – AdaTheDev

1

La syntaxe est très bien. Si cela ne fonctionne pas pour vous, cela peut être dû à la collation de votre base de données.

Si vous avez un classement sensible à la casse, il ne correspondra PAS, sauf si le cas correspond. par exemple. si @name est 'Quelque chose a dit', alors un LIKE cherchant "John" ne trouvera pas de correspondance, donc ira à l'ELSE.

+0

Merci pour cette info. Je vais voter votre réponse une fois que j'aurai 15 réputation ... – user322652

+0

Oui, c'est MS SQL Server. (avec toute l'étrangeté que cela implique) J'ai comparé la version de travail à la version non-fonctionnelle et j'ai seulement trouvé une différence de fin de ligne point-virgule sur la déclaration et le set de variables et que je n'ai pas défini de longueur pour mon varchar. – user322652

Questions connexes