的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