SQL用于选择与带通配符的URL匹配的行

时间:2010-08-04 22:33:40

标签: c# asp.net sql regex linq

我在数据库中有一个表,其中一列包含http://example.com/users/ * / profile

之类的URL

我获得了一个URL(如http://example.com/users/234/profile),并希望选择db中与url匹配的所有行(在本例中为*是通配符)。

我正在考虑使用Regex来执行此操作,将*替换为任何字符的正则表达式。但我不确定选择SQL或LINQ代码应该是什么。

你们有什么想法吗?

2 个答案:

答案 0 :(得分:6)

除非我遗漏了一些明显的东西,否则这只需要一个简单的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;

答案 1 :(得分:2)

就像做类似一样简单,但用%字符替换*字符,因为它是T-SQL使用的通配符(我假设你在SQL Server上,因为这是C#和Linq相关)

SELECT * 
FROM YourTable
WHERE @TheUrlIWantToMatch LIKE REPLACE(URL, '*', '%')