2010-04-21 447 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