Gérer les caractères génériques pour joindre des tablesJe dois rejoindre plusieurs tables, mais la colonne à laquelle je dois me joindre comporte des caractères génériques pour l'une des colonnes des tables. Les tables ne sont pas très grandes donc il n'est pas nécessaire que ce soit très efficace.
Dans la colonne Table1 KEY ci-dessous, il peut y avoir n'importe quel caractère alphanumérique à l'endroit où se trouvent les points d'interrogation. Entre parenthèses se trouvent des instructions OR, cela peut donc être 1 ou 2 ou 3 ou 4.
Ainsi, par exemple, il devrait se joindre aux lignes 1 et 2 du tableau 2 puisque les caractères génériques correspondraient. Mais la ligne 3 a un 9 où le modèle OU n'a que 1|2|3|4.
Je pensais dupliquer la ligne pour chaque combinaison alphanumérique possible où se trouvent les points d'interrogation, et pour chaque combinaison entre parenthèses OU, la jointure fonctionnerait - je ne sais pas comment procéder.
Tableau 1
| CLÉ | DONNÉES |
| ABC?Y?[1|2|3|4]Z | 99999 |
Tableau 2
| CLÉ | DATE |
| ABC1YA1Z | 2019/08/14 22:10:10 |
| ABCZYB4Z | 2019/08/14 23:11:11 |
| ABC1YA9Z | 2019/08/14 12:12:12 |
Tableau des résultats :
| CLÉ | DATE | DONNÉES |
| ABC1YA1Z | 2019/08/14 22:10:10 | 99999 |
| ABCZYB4Z | 2019/08/14 23:11:11 | 99999 |
| ABC1YA9Z | 2019/08/14 12:12:12 | . |
Re : Gérer les caractères génériques pour joindre des tablesMerci Jara95 - c'est très proche de la solution. J'ai apporté quelques petites modifications - je ne suis pas sûr de la façon dont vous faisiez référence aux lignes de colonnes en utilisant cette méthode :
dt1[r,"DATA"]
J'ai opté pour cette méthode et ça marche :
dt1:DATA[r]
J'ai aussi trouvé qu'avec Regex, vous pouvez quitter la salle d'opération | opérateurs en place, pas besoin de les remplacer.
Une dernière chose que j'ai modifiée est la boucle For de N Col à N Row.
Mon script final ressemble donc à ceci :
dt1 << New Column( "KEY_reg", character, formula( Substitute( dt1:KEY, "?", "[A-Z0-9]" ) ) );
dt2 << New Column( "DATA" );
For( r = 1, r <= N Row( dt1 ), r++,
r1 = dt2 << Get Rows Where( !Is Missing( Regex( dt2:KEY, dt1:KEY_reg[r] ) ) );
dt2:DATA[r1] = dt1:DATA[r];
);
Merci encore!
Re : Gérer les caractères génériques pour joindre des tablesVous pouvez convertir votre format KEY au format d'expression régulière.
dt1 est le tableau 1 et dt2 est le tableau 2.
dt1<<NEW column=""></NEW>
J'ai essayé d'utiliser le mise à jour commande mais sans succès.
dt2<< update(with(dt1),match columns(regex(:KEY,:KEY_reg ))) //[NOT WORKING]
Voici une manière manuelle de faire le travail.
dt1<<NEW column=""></NEW>
Merci.