的URL行我有一個數據庫中的表包含一列的URL像http://example.com/users/ */profile文件SQL選擇匹配通配符
我給出一個網址(如http://example.com/users/234/profile),並要選擇所有數據庫中匹配url的行(在這種情況下*是通配符)。
我想使用正則表達式來做到這一點,通過用任何字符的正則表達式替換*。但我不確定SQL或LINQ代碼應該用於選擇。
你們有什麼想法嗎?
的URL行我有一個數據庫中的表包含一列的URL像http://example.com/users/ */profile文件SQL選擇匹配通配符
我給出一個網址(如http://example.com/users/234/profile),並要選擇所有數據庫中匹配url的行(在這種情況下*是通配符)。
我想使用正則表達式來做到這一點,通過用任何字符的正則表達式替換*。但我不確定SQL或LINQ代碼應該用於選擇。
你們有什麼想法嗎?
除非我失去了一些東西很明顯,這應該只是需要簡單LIKE查詢。
SELECT *
FROM YourTable
WHERE URL LIKE 'http://example.com/users/%/'
正則表達式在SQL查詢中是過度和棘手的。
注意:%字符與SQL表達式中的*通配符等效。
如果你想使用LINQ和只工作對SQL Server,你可以使用這個語法:
var results =
from yt in YourTable
where SqlMethods.Like(yt.URL, "http://example.com/users/%/")
select yt;
這就像做一個像,而是由%字符替換*字符,因爲它是那麼簡單通過T-SQL中使用通配符(我假設你是SQL Server上,因爲這是C#和LINQ相關)
SELECT *
FROM YourTable
WHERE @TheUrlIWantToMatch LIKE REPLACE(URL, '*', '%')
像這樣不行。 LIKE關鍵字前的表達式中不能有通配符。 – JohnFx 2010-08-04 22:47:16
哎呀,我把它們放錯了順序。我編輯它感謝指出 – StevenGilligan 2010-08-04 22:53:26
是否有一個簡單的方法來做到這一點的LINQ?似乎他們只有開始,包含等... – rksprst 2010-08-05 02:36:52
更新我的答案,包括一個LINQ版本。 – JohnFx 2010-08-05 04:29:01