2012-08-07 18 views
0

我查詢查找包含特定標籤的數據集,讓說:在T-SQL中是否有使用LIKE的通配符的替代?

SELECT * FROM Authors 
    WHERE Title LIKE @pattern 

其中@pattern由用戶自定義。所以,%abc%將匹配abcd0abc等有時也有像

  1. XABC-ONE
  2. blaYabc-TWO-sometext標籤
  3. ZABC三
  4. blubXabc四

我正在尋找包含abc和ONE或TWO的標籤,如%abc%(ONE|TWO)%。可能嗎?

+0

也許這會有所幫助:http://stackoverflow.com/a/6778362/14955 – Thilo 2012-08-07 07:48:19

+0

不幸的是,我不能到SQL Server上使用用戶定義的函數。 – alex555 2012-08-07 08:00:25

回答

0

也許我不明白你的問題吧,但爲什麼不乾脆

SELECT * FROM Authors 
WHERE Title LIKE '%abc%ONE%' OR '%abc%TWO%' 

LIKE只是一個帶有通配符的搜索,沒有其他的東西,所以實際上沒有其他的方法可以用LIKE來做你想要的。如果您需要更多,請查看regular expressions。但請注意,它比LIKE慢,在你的情況下絕對沒有必要。

UPDATE:

從評論「不想去關心用戶要配什麼」 ......然後簡單地做這樣的:

SELECT * FROM Authors 
WHERE Title LIKE CONCAT('%', $userInput, '%ONE%') OR CONCAT('%', $userInput, '%TWO%') 

還是我仍然不要糾正你的錯誤?

+0

我不想關心用戶想要匹配什麼,並相應地更改我的查詢。那麼,我將測試CLR函數在我們的sql環境中將付出多少努力。 – alex555 2012-08-07 09:45:44

+0

@ alex555更新了我的答案。 – fancyPants 2012-08-07 11:05:11

+0

您的查詢仍然取決於用戶的輸入。如果用戶查找'%abc%FOUR%',則不再有效。這就是我的意思。但是「喜歡」不能用邏輯操作來處理,所以不得不使用你的第一個建議。 – alex555 2012-08-10 11:39:05

0

您可以通過CLR函數向SQL Server添加對正則表達式的支持,如this answer所示,但在您的環境中可能無法實現。請檢查您的友好系統管理員!

+0

我會盡力;)謝謝你的鏈接。 – alex555 2012-08-07 09:47:05

0

如果您使用的是SQL Server,您可以啓用全文搜索引擎,並使用鍵盤包含附近找到附近的一個

ABC我會在查詢中說(僞代碼)

Select something from table where CONTAINS(column_name, 'abc NEAR ONE') 

http://msdn.microsoft.com/en-us/library/ms142568.aspx

相關問題