處理連接表的通配符我需要聯接多個表,但我需要聯結的列具有表列之一的通配符。 表不是太大,因此不需要非常有效率。
在下面的表 1 KEY 欄位中,問號所在的位置可以是任何單一字母數字字元。 括號中是 OR 語句,因此可以是 1 或 2 或 3 或 4。
例如,它應該連接到 Table2 的第 1 行和第 2 行,因為通配符會匹配。 但第 3 行有 9,其中 OR 模式只有 1|2|3|4。
我正在考慮為問號所在的每個可能的字母數字組合複製該行,並且對於 OR 括號中的每個組合,連接將起作用 - 不知道如何執行此操作。
表格1
| 鑰匙 | 數據 |
| ABC?Y?[1|2|3|4]Z | 99999 |
表2
| 鑰匙 | 日期 |
| ABC1YA1Z | 2019/08/14 10:10:10 下午 |
| ABCZYB4Z | 2019/08/14 11:11:11 下午 |
| ABC1YA9Z | 2019/08/14 12:12:12 下午 |
結果表:
| 鑰匙 | 日期 | 數據 |
| ABC1YA1Z | 2019/08/14 10:10:10 下午 | 99999 |
| ABCZYB4Z | 2019/08/14 11:11:11 下午 | 99999 |
| ABC1YA9Z | 2019/08/14 12:12:12PM | 。 |
回覆:處理連接表的通配符謝謝 Jara95 - 這非常接近解決方案。 我做了一些小的編輯 - 不確定您如何使用此方法引用列行:
dt1[r,"DATA"]
我切換到這個方法並且它有效:
dt1:DATA[r]
我還發現使用正規表示式你可以離開 OR |操作員已就位,無需將其替換掉。
我改變的最後一件事是 For 循環從 N Col 到 N Row。
所以我的最終腳本看起來像這樣:
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];
);
再次感謝!
回覆:處理連接表的通配符您可以將 KEY 格式轉換為正規表示式格式。
dt1 是表 1,dt2 是表 2。
dt1<<NEW column=""></NEW>
我嘗試使用更新命令但不成功。
dt2<< update(with(dt1),match columns(regex(:KEY,:KEY_reg ))) //[NOT WORKING]
以下是完成這項工作的手動方式。
dt1<<NEW column=""></NEW>
謝謝。