J'ai 2 jeux de données que j'ai besoin de faire correspondre sur un champ d'identifiant:
data1: strong> p> J'ai besoin de fusionner (style SQL donc je veux toutes les lignes où la chaîne code> ID code> dans le premier jeu de données contient le joint interne code>) ces deux joints de données sur
id code> colonne mais pas
data1.id = data2.id code>. Ce que je veux, c'est
data1.id contient data2.id code>. P>
ID code> chaîne du deuxième jeu de données. p> p>
3 Réponses :
en SQL, utilisez le comme commenté par Themousemaster, cette technique pourrait générer des lignes de sortie dupliquées si plusieurs identifiants se produisent trouvé dans le même champ. Vous pouvez utiliser comme code> Opérateur:
distinct code> pour éliminer les duplicats: p>
Cela revient vraiment à ce que le résultat est conçu pour faire. Il pourrait facilement se retrouver avec 2 tables qui ne disposent que de 3 lignes chacune, mais ont une table résultante de 9 enregistrements. Si c'est ce qu'il veut, alors tout va bien, bien sûr :)
Utiliser Existe code> Si vous voulez seulement les lignes d'une table:
select d1.id
from data1 d1
where exists (select 1 from data2 d2 where d1.id like '%' || d2.id || '%';
Vous pouvez utiliser la fonction d'index
La réponse sera une forme de déclaration similaire, mais être averti: si la valeur de Data2 est aussi courte que votre échantillon est, à moins que vos jeux de données complets ne soient très petits, il y a une très bonne chance que vous allez trouver plusieurs matchs par entrée de données2.