J'ai une logique actuellement dans ma déclaration SQL qui enlève toute la ponctuation afin que je puisse comparer facilement les deux champs facilement; Cependant, j'ai un problème maintenant où ma table a un nom de banque de J'ai plusieurs noms de banque différents avec ce problème. P> Comment ajouter un Je pensais peut-être un Je reçois actuellement 31 matchs Soley basé sur la ponctuation; Cependant, ma sortie attendue est supérieure à 1 650. En effet, Bancomer n'a aucun match nulle part uniquement basé sur le nom exact, cependant, lorsque je vais dans la base de données de table B, il y a ~ 1600 sorties pour BBVA Bancomer SA Institucion de Banca multiple, Grupo Financiero BBVA Bancomer Code> et ma table B a le nom de l'institution de, BBVA Bancomer code> et d'autres variations qui ne correspondent pas à la table A. comme '% où code> clause; Cependant, je ne sais pas comment comparer les deux champs ensemble en fonction de la fonction comme code>. Si j'ai trouvé une solution pour cela, devrais-je faire de même pour chaque banque nécessaire? P>
comme '% Bancomer%' code>. Je dois implémenter un comme fonction code>. P> p>
4 Réponses :
Vous pouvez ajouter des conditions supplémentaires à la jointure
SELECT * FROM T1 JOIN T2 ON T1.fieldA = T2.fieldA AND T1.fieldB = Somefunction(T2.fieldB)
Puis-je faire ceci? Sélectionnez * à partir de T1 Joindre T2 sur T1.Fields = T2.Fields et SUM Fonction (T1.Fields) = Asscunction (T2.Fielda) Code>
Vous avez probablement besoin de ou code> - mais oui, vous pouvez.
Je pense que ce dont vous avez besoin est une table de recherche qui vous donne des valeurs. Ensuite, vous pouvez peupler cette table d'une manière qui conduit vos règles d'entreprise.
Par exemple, considérez la table de recherche suivante. p> alors vous pouvez avoir une requête comme celle-ci: p> Maintenant, nous avons une jointure A et B sur Boa = Bank of America et Citibank = Citi P> Vous pouvez continuer à ajouter de nouvelles entités à la table de recherche que vous «les trouverez» et que vous les souhaitez rejoindre ensemble. P> Utilisation d'une table de recherche de cette manière sur les serveurs SQL est beaucoup fort> plus rapide que d'exécuter une fonction (ou plusieurs) comme vous êtes dans le code d'échantillon. P> P>
Fini par faire cela, merci! Grande solution à mon problème.
Peut-être qu'il suffit d'utiliser si ce n'est pas clair quelle banque est laquelle est celle qui est le nom plus court et qui est le Nom plus complexe. P> p> comme code>:
Combien de noms de banque non assortis avez-vous? Voulez-vous obtenir plus d'informations bancaires? p>
Malheureusement, il n'y a pas de moyen idéal pour résoudre ce problème. Votre nom remplacé doit fonctionner dans une certaine mesure, mais s'il ya quelques fautes de frappe ou que le nom est tronqué. "LLC" et "LL", le nom remplacé n'est toujours pas fiable. p>
J'avais le même problème, par exemple, lorsque je reçois de nouvelles informations bancaires, elle n'est pas reconnue au tableau des banques. p>
Comment j'ai résolu mon problème: P>
Créez une table pour stocker tous les noms d'alias et le nom correct de la banque (l'effort manuel sera nécessaire) Colonne: Nom correct, nom d'alias, ... p> li>
Écrivez un déclencheur pour suivre toutes les modifications apportées. Si quelqu'un modifie le nom de banque, ce changement sera automatiquement stocké dans la table ci-dessus. P> Li>
Comme de plus en plus d'informations bancaires sont collectées, il sera adapté facilement. P> li> ol>
Cela pourrait vous aider si vous avez donné des exemples concrets des données que vous avez et ce que vous attendez comme la sortie.
sur remplacer ((((((()))) = remplacer ((((((()))) ou un. [Nom de banque] + '%' code> ou Vous pouvez combiner ces idéessur remplacer (((((()))), comme Remplacer (((((((()))) + '%' code>