我查詢查找包含特定標籤的數據集,讓說:在T-SQL中是否有使用LIKE的通配符的替代?
SELECT * FROM Authors
WHERE Title LIKE @pattern
其中@pattern由用戶自定義。所以,%abc%
將匹配abcd
,0abc
等有時也有像
- XABC-ONE
- blaYabc-TWO-sometext標籤
- ZABC三
- blubXabc四
我正在尋找包含abc和ONE或TWO的標籤,如%abc%(ONE|TWO)%
。可能嗎?
我查詢查找包含特定標籤的數據集,讓說:在T-SQL中是否有使用LIKE的通配符的替代?
SELECT * FROM Authors
WHERE Title LIKE @pattern
其中@pattern由用戶自定義。所以,%abc%
將匹配abcd
,0abc
等有時也有像
我正在尋找包含abc和ONE或TWO的標籤,如%abc%(ONE|TWO)%
。可能嗎?
也許我不明白你的問題吧,但爲什麼不乾脆
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%')
還是我仍然不要糾正你的錯誤?
我不想關心用戶想要匹配什麼,並相應地更改我的查詢。那麼,我將測試CLR函數在我們的sql環境中將付出多少努力。 – alex555 2012-08-07 09:45:44
@ alex555更新了我的答案。 – fancyPants 2012-08-07 11:05:11
您的查詢仍然取決於用戶的輸入。如果用戶查找'%abc%FOUR%',則不再有效。這就是我的意思。但是「喜歡」不能用邏輯操作來處理,所以不得不使用你的第一個建議。 – alex555 2012-08-10 11:39:05
您可以通過CLR函數向SQL Server添加對正則表達式的支持,如this answer所示,但在您的環境中可能無法實現。請檢查您的友好系統管理員!
我會盡力;)謝謝你的鏈接。 – alex555 2012-08-07 09:47:05
如果您使用的是SQL Server,您可以啓用全文搜索引擎,並使用鍵盤包含附近找到附近的一個
ABC我會在查詢中說(僞代碼)
Select something from table where CONTAINS(column_name, 'abc NEAR ONE')
也許這會有所幫助:http://stackoverflow.com/a/6778362/14955 – Thilo 2012-08-07 07:48:19
不幸的是,我不能到SQL Server上使用用戶定義的函數。 – alex555 2012-08-07 08:00:25