SQL для выбора строк, которые соответствуют URL с подстановочными знаками - PullRequest
2 голосов
/ 05 августа 2010

У меня есть таблица в БД с одним столбцом, содержащим URL-адрес типа http://example.com/users/*/profile

Мне дан URL (например, http://example.com/users/234/profile), и я хочу выбрать все строки в БД, которые соответствуют URL-адресу (в данном случае * это подстановочный знак).

Я думал об использовании Regex, чтобы заменить * на regex для любого символа. Но я не уверен относительно того, каким должен быть код SQL или LINQ для выбора.

У вас, ребята, есть идеи?

Ответы [ 2 ]

6 голосов
/ 05 августа 2010

Если я не пропустил что-то очевидное, для этого может потребоваться простой LIKE запрос.

SELECT *
FROM YourTable
WHERE URL LIKE 'http://example.com/users/%/'

Regex излишне сложен в запросах SQL.

Примечание: Символ% является эквивалентом подстановочного знака * в выражениях SQL.

Если вы хотите использовать LINQ и работать только с SQL Server, вы можете использовать этот синтаксис:

var results =
        from yt in YourTable
        where SqlMethods.Like(yt.URL, "http://example.com/users/%/")
        select yt;
2 голосов
/ 05 августа 2010

Это так же просто, как сделать подобное, но заменить символ * на символ%, так как это подстановочный знак, используемый T-SQL (я предполагаю, что вы находитесь на SQL Server, поскольку это связано с C # и Linq)

SELECT * 
FROM YourTable
WHERE @TheUrlIWantToMatch LIKE REPLACE(URL, '*', '%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...