如何ssr替换kdb中的所有字符串?

时间:2017-06-05 21:00:16

标签: kdb

表格dd

dd:([]a:("account=abcde;cash=123";"account=abc;cash=345");1 2)

结果:

"account=abcde;cash=123"    1
"account=abc;cash=345"      2

我想替换帐户中的所有内容: 所以结果应该是

"replace;cash=123"  1
"replace;cash=345"  2

我试过这个

update ssr[;"account=* ;";""] each a from dd

但它不起作用。

4 个答案:

答案 0 :(得分:3)

尝试以下方法:

q)update {";"sv @[s;where (s:";"vs x) like "account=*";:;enlist"newVal=123"]}each a from dd

答案 1 :(得分:1)

无法使用外卡*和http://code.kx.com/q/cookbook/regex/#regex-in-q上的ssr信息 与正则表达式库集成。

ssr的替代解决方案:

update a:{v:(" *";";")0:x;y,/:v 0}[a;"replacestring;"] from dd where a like "account=\*"

答案 2 :(得分:1)

只是再打一个答案!如果您可以假设您要替换的帐户部分始终是第一个成员;分隔列表,你可以使用稍微简单:

update ";"sv'@[;0;:;"replace"]each";"vs'a from dd

答案 3 :(得分:0)

如果您想明确使用ssr

,也可以尝试以下操作
update {ssr[first "=" vs x;"account";"replace",";",last ";" vs x]} each a from dd

a                  x
--------------------
"replace;cash=123" 1
"replace;cash=345" 2