2010-01-13 58 views
1

我有一個ID,名稱一些表「表名」:包含SQL函數不匹配下劃線

1 | something 
2 | _something 
3 | something like that 
4 | some_thing 
5 | ... 

我想從這個表,其中名稱containes「一些」得到所有行。 我有2種方式:

SELECT * FROM TableName WHERE Name like '%some%' 

結果表:

1 | something 
2 | _something 
3 | something like that 
4 | some_thing 

但是,如果使用是函數

SELECT * FROM TableName WHERE CONTAINS(Name,'"*some*"') 

我只得到

1 | something 
3 | something like that 

我應該怎麼做做CONTAINS功能正常工作?

回答

0

http://doc.ddart.net/mssql/sql70/ca-co_15.htm

如果你閱讀這篇文章,你會看到,*表示前綴,這意味着單詞必須與這個開始,但像指字包含關鍵短語。

最好的問候, 約爾丹

+0

我知道*代表什麼前綴,我用它來獲得像「類似的東西」或者「這是一件」的字符串。我很感興趣的是如何使用CONTAINS函數獲得帶下劃線的字符串。 – Kate 2010-01-13 10:00:47

+1

然後你必須添加一個更多CONTAINS函數與父母下劃線SELECT * FROM TableName WHERE CONTAINS(Name,'「* some *」')或CONTAINS(Name,'「* _ some *」') – IordanTanev 2010-01-13 10:22:01

+0

如果我使用它,我可以得到'something','_something'等字符串,但不能得到'some_thing'。我想得到所有字符串'一些',所以你的方式不是萬能的。 – Kate 2010-01-13 10:33:13

0

試試這個:

SELECT * FROM TableName WHERE CONTAINS(Name,'some') 
+0

這太容易了。在拳頭我嘗試它,它不工作。 – Kate 2010-01-13 09:55:32