2013-11-27 17 views
1

在查詢中我可以使用什麼來代替LIKE? 由於LIKE對搜索條件的性能影響較差。避免在SQLQueries中使用LIKE

我的情景:

SELECT 
    * 
FROM 
    MetaDataTag 
WHERE 
    Name LIKE 'SUN RCC%' 

我不能使用含有作爲全文索引,需要在桌子上,這我沒有選擇了。

建議將非常有幫助。

+0

你爲什麼不上某些列使用像然後在整個表'(SELECT *)'?那需要時間 –

+0

另一種選擇是使用'CHARINDEX'(請參閱:http://technet.microsoft.com/en-us/library/ms186323.aspx)如果返回的值大於0,則它存在於字符串中。不幸的是,由於'CHARINDEX('123','1')和'CHARINDEX('123','5')都返回0,它不能確定包含的字符串是開始還是不存在。你可以通過給要比較的字符串添加一個前綴來解決這個問題,但我個人會說在這個例子中'LIKE'是一個合理的解決方案。 – talegna

+0

另一種選擇是查看'LEFT(str)'的內容(請參閱:http://stackoverflow.com/questions/9493844/is-there-startswith-or-contains-in-t-sql-with-variables ) – talegna

回答

0

試試這個..

SELECT 
    * 
FROM 
    MetaDataTag 
WHERE PATINDEX('SUN RCC%', Name) != 0