将名称替换为 kdb q 中的原始名称

问题描述 投票:0回答:1

有两张桌子

名称 - 带列 - OriginalName、用户名

姓名 用户
阿尔纳布·艾哈迈德 “ancdv”
阿尔纳布·艾哈迈德 “ancdv4”
阿尔纳布·艾哈迈德(TY) “id001”

myTable - 包含列 - CustomerName myTable:([]CustomerName: "Arnab ahmed";"id001";"ancdv";"Arnab ahmed (TY) )

客户姓名
“阿纳布·艾哈迈德”
“id001”
“ancdv”
“阿尔纳布·艾哈迈德 (TY)

-> 名称表具有固定长度,例如最多 20 行,其中包含值 -> myTable 有 n 个值,例如 2000 行,其中包含客户名称

我需要检查名称表(任何列)中是否存在 myTable 中的客户名称(如果存在),然后将客户名称更改为原始名称(来自名称表)

我需要检查 customerName 是否存在于 输出应该是

客户姓名
“阿纳布·艾哈迈德”
“阿纳布·艾哈迈德”
“阿纳布·艾哈迈德”
“阿纳布·艾哈迈德”

如何实现以上目标

kdb q
1个回答
0
投票

我不确定 Arnab ahmed (TY) 是什么,为什么没有出现在您的最终结果中?

如果我理解得很好,执行此 SQL 查询后,myTable 将更新为所需的结果,其中在找到匹配项时将 CustomerName 替换为 OriginalName。

不要忘记创建备份,因为此查询将更新您的表:

q('update CustomerName:?[CustomerName in Names`CustomerName; Names`OriginalName; CustomerName] from myTable', { myTable, Names }, (err, result) => {
  if (err) {
    console.error(err);
  } else {
    console.log(result.myTable);
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.