Comment rechercher des entrées commençant par la chaîne donnée à partir d'une base de données SQL Server?
J'ai une base de données avec beaucoup de mots pour être utilisé dans un système de tag. J'ai créé le code nécessaire pour une zone de saisie semi-automatique, mais je ne suis pas sûr de la façon de récupérer les entrées correspondantes dans la base de données de la manière la plus efficace.
Je sais de la commande, mais il me semble que c'est plus d'une ÉGALITÉ de commande. Je ne reçois que des mots qui ressemble exactement le mot que j'entrez.
Mon plan est de lire chaque ligne, puis l'utilisation de C#string.StartsWith() et string.Contient des fonctions() pour trouver les mots qui peuvent s'adapter, mais je pense qu'avec une grande base de données, il peut être inefficace pour lire chaque ligne, puis filtrer.
Est-il un moyen de lire uniquement les lignes qui commence par ou contient une chaîne de caractères à partir de SQL Server?
source d'informationauteur Erlend D. | 2010-07-27
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez le souhaitez, vous fournir un signe % comme un caractère générique. Si vous voulez les chaînes qui commencent par Bonjour, vous utilisez COMME " Bonjour%' Si vous voulais des chaînes de caractères avec Bonjour de n'importe où dans la chaîne, vous pouvez utiliser LIKE '%Bonjour%'
Que de l'efficacité, en utilisant Comme n'est pas optimale. Vous devriez regarder dans une recherche plein texte.
C'est parce que vous n'utilisez pas de caractères génériques:
...retourne des lignes où la
column
valeur commence par "abc". Je vais souligner que lors de l'utilisation de caractères génériques, cette version est la seule qui peut faire usage d'un index sur lacolumn
... er colonne....retourne des lignes où la
column
valeur "abc" n'importe où. Wildcarding le côté gauche de l'un COMME de garanties qu'un index ne peut pas être utilisé.SQL Server n'a pas nativement en charge les expressions régulières - vous devez utiliser les fonctions CLR pour accéder à la fonctionnalité. Mais il effectue sur le pair avec COMME.
De Recherche en Texte intégral (FTS) est le meilleur moyen de rechercher du texte.
Vous pouvez utiliser
CONTAINS
en T-SQL, mais je suis sûr que vous devez avoir à utiliser l'indexation de texte intégral pour la table impliqués dans votre requête.Contient
Mise en route avec la Recherche de Texte Intégral
Vous pouvez également mettre en place un StartWith fonctionnalité en utilisant les instructions suivantes:
Utiliser celle qui donne les meilleurs résultats.