2011-09-15 6 views
1

Comment puis-je rechercher les lignes contenant du texte et obtenir une marque en fonction du nombre de répétitions de ce texte?Rechercher une ligne dans SQL Server

  • J'ai installé SQL Server CTP3 mais je ne sais pas où commencer
  • Peut-être que je peux utiliser like %criteria% et compter combien de fois le texte se répète à chaque enregistrement, mais il ne semble pas très efficace .
  • Ce serait génial s'il y avait une routine sur le serveur SQL pour le faire
+0

Pouvez-vous le faire en deux passes? – alexn

+1

Que voulez-vous dire par marque? Ne pouvez-vous pas utiliser count() avec une clause where? – TheCodeKing

+1

Vérifiez [Recherche Fulltext SQL Server] (http://msdn.microsoft.com/en-us/library/ms142571.aspx) qui permet juste que ... C'est la fonction [CONTAINSTABLE] (http: // msdn. microsoft.com/fr-fr/library/ms189760.aspx) –

Répondre

1

Si je comprends ce que vous essayez de faire, je vous suggère d'utiliser une fonction de liste de texte à mot. Il y a quelques exemples here. Si vous utilisez l'indexation de texte intégral, vous pouvez même utiliser CONTAINSTABLE. Vous pouvez ensuite vous joindre à cette fonction de valeur de table et agréger le nombre.

Select t.*, 
    (Select count(w.*) 
    From dbo.getWordList(t.text) w 
    Where w.word like '%criteria%') as Count 
From MyTable t 
Where t.text like '%criteria%' 

Vous pouvez également résoudre l'ensemble du problème dans une fonction CLR.

+0

Merci, je vais essayer! –

0

Si vous voulez obtenir le temps d'apparition de chaîne dans un seul enregistrement de données SQL Server, le RegEx serait plus approprié.

+1

SQL Server ne fait pas de regex ...... –

Questions connexes