2010-08-04 4 views
2

J'ai une table dans la db avec une colonne contenant une URL comme http://example.com/users/ */profilSQL pour sélectionner les lignes qui correspondent à une URL avec caractères génériques

Je me donne une URL (comme http://example.com/users/234/profile) et que vous souhaitez sélectionner tous les lignes dans la base de données qui correspondent à l'URL (dans ce cas * est un caractère générique). Je pensais utiliser Regex pour cela, en remplaçant le * par regex pour n'importe quel caractère. Mais je ne suis pas sûr de ce que le code SQL ou LINQ devrait être pour la sélection.

Avez-vous des idées?

Répondre

6

À moins de manquer quelque chose d'évident, cela ne devrait nécessiter qu'une simple requête LIKE. Regex est trop compliqué et difficile dans les requêtes SQL.

Remarque: Le caractère% est l'équivalent du caractère générique * dans les expressions SQL.

Si vous souhaitez utiliser LINQ et ne travaillez que sur SQL Server, vous pouvez utiliser cette syntaxe:

var results = 
     from yt in YourTable 
     where SqlMethods.Like(yt.URL, "http://example.com/users/%/") 
     select yt; 
+0

Y a-t-il un moyen facile de le faire dans linq? Apparemment, ils ont seulement startwith, contient, etc ... – rksprst

+0

mis à jour ma réponse pour inclure une version de LINQ. – JohnFx

2

Il est aussi simple que de faire un comme, mais en remplaçant le caractère * par le caractère% puisqu'il est le caractère générique utilisé par T-SQL (je suppose que vous êtes sur SQL Server puisque ceci est lié à C# et Linq)

+1

Comme ne fonctionne pas de cette façon. Vous ne pouvez pas avoir un caractère générique dans l'expression avant le mot clé LIKE. – JohnFx

+1

Oups je les ai mis dans le mauvais ordre. Je l'ai édité merci de souligner cela – StevenGilligan

Questions connexes