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

如何使用ssr替换kdb中的所有字符串?,kdb,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

表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
但它不起作用。

请尝试以下操作:

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

如果要显式使用
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

无法使用带有ssr信息的通配符* 用于与正则表达式库集成

ssr的替代解决方案:

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

再多扔一个答案!如果您可以假定要替换的帐户部分始终是该帐户的第一个成员;分隔列表您可以使用稍微简单一点的:

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

将仅支持2个键/值对:dd:([]a:(“account=abcde;id=112234;cash=123”;“account=abc;id=112236;cash=345”);12)