我願做這樣的事情,即,在子句中使用通配符在:使用類似語法的SQL IN語句?
SELECT * FROM mytable WHERE keywords IN ('%test%', '%testing%')
這不是在SQL Server支持....有一些其他的方式來實現這一目標?
尋找比其他的東西:
SELECT * FROM mytable WHERE keywords like '%test%' or keywords like '%testing%' or.....
我願做這樣的事情,即,在子句中使用通配符在:使用類似語法的SQL IN語句?
SELECT * FROM mytable WHERE keywords IN ('%test%', '%testing%')
這不是在SQL Server支持....有一些其他的方式來實現這一目標?
尋找比其他的東西:
SELECT * FROM mytable WHERE keywords like '%test%' or keywords like '%testing%' or.....
不,只有我能想到的是到一個臨時表中加入的,但那麼你必須消除重複行其他方式。
這樣的查詢是非常低效的,因爲它會無條件地進行表掃描。也許你應該看看分隔關鍵字或引入全文索引。
如果你想研究全文搜索,那麼當你評估Sql Server全文解決方案時,我建議你考慮一下像sphinx或lucene這樣的重量。
SELECT DISTINCT *
FROM
mytable M
JOIN
(
SELECT '%test%' AS pattern
UNION ALL SELECT '%testing%'
...
) foo ON M.keywords LIKE foo.Pattern
可能是一個CTE或臨時表太
這不是在MS SQL支持....是 有一些其他的方式來實現呢?
我認爲你的實際使用比較複雜,但是在你給出的例子中你只需要LIKE'%test%',因爲任何匹配'%testing%'的東西都會匹配'%test%'。另外,如果您可以控制數據庫結構,那麼最好將關鍵字的存儲規範化。 – 2010-03-30 21:40:31
@larry lustig:我只是給出了一個玩具的例子...我想做一些複雜的事情..謝謝 – StackUnderflow 2010-03-30 21:54:17