我在数据库中有一个表,其中一列包含http://example.com/users/ * / profile
之类的URL我获得了一个URL(如http://example.com/users/234/profile),并希望选择db中与url匹配的所有行(在本例中为*是通配符)。
我正在考虑使用Regex来执行此操作,将*替换为任何字符的正则表达式。但我不确定选择SQL或LINQ代码应该是什么。
你们有什么想法吗?
答案 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, '*', '%')