Sql Comme pour RegEx
Est-il une bonne façon de convertir Expression Régulière dans COMME à l'intérieur d'une Fonction (MSSQL)?
La procédure stockée n'est pas plus compliqué que cela:
(country\=)(?<Country>[\w\d]+)(\&sessionid\=)(?<SessionId>.+)
Les groupes ne seront pas utilisés dans les AIMENT, ils sont là pour un autre but.
Je voudrais utiliser ce à l'intérieur d'une procédure stockée en retard comme:
SELECT * FROM [Table]
WHERE test_regex(regex, 'text') = 1
Où l'expression régulière est une partie de [Table]
Qu'essayez-vous de réaliser? Une sorte de tableau de répartition mécanisme où les règles sont exprimées comme des expressions régulières? ...Juste curieux de savoir si j'ai deviné correctement.
Je présume que l'analyse des fichiers journaux. Qui ressemble à une chaîne de requête.
Tomek sont corrects 🙂
Je présume que l'analyse des fichiers journaux. Qui ressemble à une chaîne de requête.
Tomek sont corrects 🙂
OriginalL'auteur Andreas | 2010-07-15
Vous devez vous connecter pour publier un commentaire.
Il est possible d'ajouter l'Expression Régulière de l'analyse de SQL server, à l'aide d'une fonction CLR. Ceci est possible à partir de SQL 2005 et jusqu'. Voir ici pour un excellent exemple.
Alors que ce lien peut répondre à la question, il est préférable d'inclure les parties essentielles de la réponse et de fournir le lien de référence. Lien-ne répond peut devenir non valide si la page liée changements
OriginalL'auteur edosoft
J'imagine
pourrait être assez près? Si le but est juste de ramener des documents, avec non vide pays et sessionid valeurs.
Si la valeur de la colonne ne sont pas nécessairement commencer par "pays", vous auriez à utiliser
WHERE col LIKE '%country=[A-Za-z0-9]%&sessionid=[A-Za-z0-9]%'
qui pourrait ralentir considérablement par KM de réponse.OriginalL'auteur Martin Smith
Vérifier cette fonction de sql. Il peut vous aider à atteindre vos tâches :
PATINDEX('%[^0-9\.]%',@Input)
PATINDEX (Transact-SQL)
non, je ne pense pas que cela possible
OriginalL'auteur Pranay Rana
qui sera très lent sur une grande table, l'analyse de la chaîne de colonne sur chaque ligne.
si vous pouvez modifier le tableau, il peut être préférable de la diviser colonne de chaîne dans des colonnes différentes, de sorte que vous pouvez avoir une approche plus traditionnelle de
WHERE country=... AND sessionid=...
, vous pouvez même ajouter et d'utiliser un indice de cette façon.OriginalL'auteur KM.
Utiliser les RegEx fonctionnalités au sein de SQL# qui est gratuit. Je n'ai pas eu des problèmes de performances avec cette approche.
OriginalL'auteur Joel Mansford
Pas hors de la boîte. Le plus proche que vous arrivez à un regex de recherche dans SQL Server est PATINDEX(), mais ne le font pas des expressions régulières.
Si tu voulais vraiment cela, vous auriez à faire une fonction CLR pour exécuter les regex à la place. Vous pouvez être préoccupé par la vitesse, mais je dirais que presque rien de ce que vous feriez ce qui concerne les expressions régulières ou des motifs seraient en mesure d'utiliser un index de toute façon.
OriginalL'auteur Dave Markle