2016-02-12 36 views
0

是的,我知道這是一件可怕的事情要問和全文索引將解決我的所有問題,但它的運行上是不允許一個完整的Azure的V11 DB文本索引和升級目前不是一種選擇。SQL等,其中字符串可以以隨機的順序

我試圖做到的,是被送入一個搜索字符串,這對隨後一個字符串列作爲像匹配。但是,傳入的字符串可能以錯誤的順序出現。

舉個例子

SELECT value 
FROM table 
WHERE value like '%This% %Is% %A% %String%' 

工作得很好,因爲搜索字符串是爲了,但什麼我有時傳遞是 '%此%%字符串%%是%%A%'

造成;

導致;

SELECT value 
FROM table 
WHERE value like '%This% %String% %Is% %A%' 

這將無法返回任何東西。當字符串可以以任何順序出現時,是否可以應用一個類似的字符串?

我發現其他SO帖子只是歸結爲使用全文索引,因此機會是我要麼做了一些愚蠢(超出嘗試這種沒有全文索引),或者這是不可能的。

如果任何人都可以提供一些幫助,我會很感激。

快速編輯,因爲我不認爲我有詳盡的解釋自己;

,因爲en例子中,我對匹配的數據(仍在使用「%此%%字符串%%是%%A%」作爲一個例子搜索參數)將是這樣的;

  • 「這是一個字符串我想回到」
  • 「這是一個十進制」
  • 「這個整數是」
  • 「這是一個十進制」
  • 「這是串'

在這些示例中,我只想返回第一條記錄'這是我要返回的字符串',因此它與以下答案類似,只不過它需要使用AND和該輸入的長度會有所不同。例如,輸入可以是

  • '%此%%字符串%%是%%A%'
  • '%這%%是%% A%%字符串%'
  • 「%此% %字符串%」(這將返回兩個記錄)
  • '%此%%字符串%%A%'

感謝,

尼爾

回答

0

您查詢不會去非常快,但你可以將其改寫爲:

0
WHERE value like '%This% ' 
    AND value like ' %String% ' 
    AND value like ' %Is% ' 
... 

但你有種需要這樣做

(value like '%This% ' OR value like ' %This%') 

爲了應對是第一個或最後一個

你真的應該只是把單詞解析成單獨的表格
不僅僅是更快但更準確
這是任何帶有A的詞 - 例如%A%