Quelqu'un peut-il savoir s'il est possible de faire un% comme% de recherche sur une colonne dans une base de données SQL Server, mais faites-le d'ignorer les caractères spéciaux de la colonne? P>
Donc, par exemple, si j'ai une colonne appelée "chansons" et ils contiennent les éléments suivants ... P>
noir ou blanc p>
Pas de sommeil 'jusqu'à Brooklyn P>
La chanson du navire p>
papa ne prêche pas p>
Si l'utilisateur cherche "Pas de Sleey Tue Brooklyn", j'aimerais que cela retourne une correspondance même s'ils ont oublié d'inclure l'Apostrophe. J'aimerais aussi qu'il retourne la 4ème rangée s'ils recherchent "âme". Je suis sûr que vous avez l'idée .... p>
Toute aide serait vraiment appréciée. P>
4 Réponses :
Utilisez une combinaison de Traduire, Tige et Trim . < / p>
Je viens de faire une recherche de ces fonctions mais je ne trouve aucune information.
Les équivalents SQL Server sont supérieurs, ltrim, rtrim. Il n'y a pas de fonction de traduction mais vous pouvez utiliser plusieurs fonctions de remplacement pour chacun de vos caractères spéciaux.
Alors, puis-je utiliser un remplacement sur un nom de colonne, comme celui-ci ... Sélectionnez Artiste, Titre des chansons où artiste.replace ('#', ''). Remplacer ('*') Comme '% Mots-clés % ';
Vous aurez différents caractères pour supprimer. Citations simples, citations doubles, traits d'union, points, virgules, etc. p>
Vous pouvez utiliser des expressions régulières dans votre clause où la clause et faire une correspondance sur la valeur propre. En savoir plus sur REGEX au sein de SQL ici . P>
Quant à l'art où vous souhaitez renvoyer la 4ème ligne de Soul .. Vous aurez besoin d'une structure de données pour étiqueter des chansons et vous devrez effectuer une recherche sur les balises pour le match. J'ai bien peur que nous aurons besoin de plus de détails sur votre structure de données pour cela. P>
Je suis terrible à l'aide de Regex, mais peut être capable de trouver une regex en ligne qui supprime des caractères spéciaux. Merci
Je regarderais à l'aide d'un index complet de texte, puis vous pouvez utiliser la puissance de FreeText et contient votre recherche.
Edit: Je regarderais toujours la recherche de l'index de texte intégral, cependant, à suivre D'une autre réponse, il s'agit d'une option utilisant Remplacer. P>
SELECT Artist, Title FROM Songs WHERE REPLACE(REPLACE(REPLACE(Artist, '#',''), '*', ''), '"', '') LIKE '%Keywords%'
Dang, me bat à moi. Cela semble vraiment comme la voie à suivre, imo. En fait, je suis confronté à une situation similaire en ce moment et je suis sur le point de passer à la recherche de texte intégral.
Malheureusement, la raison pour laquelle j'appuie la possibilité d'écrire nos propres requêtes pour cela est que nous utilisons actuellement l'indexation de texte intégral et que le client n'aime pas cela, car ils disent que cela renvoie trop de résultats non pertinents!
@Jon, avez-vous regardé cela? msdn.microsoft.com/en-us/library/cc879245.aspx
C'est une question ancienne mais je suis tombée sur elle et je travaille également avec des titres de la chanson et je veux développer la réponse acceptée qui utilise un appel tel que qui peut être utilisé dans votre requête. Vient d'écrire cela alors espérons que cela aide quelqu'un. P> p> remplacer code>. Vous pouvez créer une liste des caractères que vous souhaitez ignorer et créer une fonction simple dans n'importe quelle langue pour générer le Quick'n'Dirty sans fin
Remplacer les lignes code>. Par exemple, en Python:
sanitize ("nom") code> retournera p>
Pourquoi voudriez-vous retourner la 4ème rangée s'ils recherchent "âme"?
Je ne suis pas sûr. J'ai écrit cela il y a 10 ans, peut-être que j'ai copié et collé la mauvaise liste? Peut-être que quelqu'un a édité la question?