2013-04-24 61 views
3

我想在數據庫表中搜索字符串模式。使用正則表達式在實體框架中搜索

搜索模式只是用戶輸入的字符串。但是,要搜索的字段之間可以有空格,否則用戶可能會在字符串中輸入空格。

所以我想創建一個正則表達式,例如,如果說字符串爲「測試」, 我期待已久的正則表達式可能有空格之間,像這樣

T[\s]*e[\s]*s[\s]*t. 

任何人都可以請建議如何我可以在Entity框架中做到這一點 - 或通過使用ESQL?

+0

空格是你需要使用正則表達式的唯一原因嗎?您可以從字段和搜索條件中刪除所有空格,然後進行比較。 – ckal 2013-04-24 18:08:16

+0

我無法從數據庫中的字段中刪除空格 - 因爲用戶輸入它 - 並且要求將其保留原樣。 – gunnerz 2013-04-25 08:20:45

回答

2

對於這種模式,你不需要一個正則表達式。你最好把它們剪掉,然後做搜索。你可能是這樣的:

SELECT * FROM MyTable 
WHERE REPLACE(MyColumn, ' ', '') LIKE '%' + REPLACE(@YourVariable, ' ', '') + '%' 
+0

這隻能解決問題的一半。它會在數據庫中找到沒有空格的記錄。不過用戶可能會輸入一個空格的記錄 - 並且他可以在任何字符之後放置空格。然後,這個搜索將不起作用。這就是爲什麼需要正則表達式。 – gunnerz 2013-04-25 08:18:32

+0

@gunnerz然後我們可以把列中的空格也列出來,所以兩者都是平等的比較。檢查我更新的編輯。我已經爲兩者添加了修剪。 – mattytommo 2013-04-25 08:23:44

+0

謝謝這個作品!我不確定搜索的效率如何。另外我猜測在實體框架中使用它是唯一通過ESQL。 – gunnerz 2013-04-25 09:03:30