2010-04-21 437 views
3

我需要能够检查一个变量是否有一个特定的文本字符串。这是我现在有:如何在IF语句中使用LIKE语句?

--This sample always goes to the ELSE block. 
IF(@name LIKE '%John%') 
BEGIN 
    --do one thing 
END 
ELSE 
BEGIN 
    --do the other thing 
END 

回答

2

不知道啊,对我的作品

declare @name varchar(45) 

set @name = 'johnson' 

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

啊哈!我的问题是,我把变量声明为一个普通的varchar,而不是像你那样长的varchar。谢谢! – user322652 2010-04-21 20:29:02

+0

一旦我的帐户允许我将此标记为答案。 (我在这里是全新的) – user322652 2010-04-21 20:29:57

+1

@ user322652 - 是的,你需要小心总是给一个尺寸。在这种情况下,它将默认为1.在其他情况下,如果未定义,则其长度为30! (如果你有兴趣,我最近在这里写了关于这个:http://www.adathedev.co.uk/2010/04/sql-cast-to-varchar-without-size.html) – AdaTheDev 2010-04-21 20:31:41

1

的语法是好的。如果它不适合你,它可能归结于数据库的整理。

如果您有一个区分大小写的排序规则,那么它将不匹配,除非大小写匹配。 例如 如果@name是'Something john said',那么搜索“John”的LIKE将不会找到匹配项,因此会转到ELSE。

+0

感谢您的信息。一旦我得到15个声望,我会投票回应你的回应... – user322652 2010-04-21 20:37:12

+0

是的,它是MS SQL Server。 (带着所有的怪异)我将工作版本与非工作版本进行了比较,只发现了变量声明和集合中分号行结尾的区别,并且没有为varchar定义长度。 – user322652 2010-04-21 20:47:53