如何ssr替换kdb中的所有字符串?
How to ssr to replace all string in kdb?
tabledd
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
不能将通配符 * 与 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=\*"
并且只是为了在堆上再扔一个答案!如果您可以假设要替换的帐户部分始终是 ; 的第一个成员您可以使用稍微简单的分隔列表:
update ";"sv'@[;0;:;"replace"]each";"vs'a from dd
tabledd
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
不能将通配符 * 与 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=\*"
并且只是为了在堆上再扔一个答案!如果您可以假设要替换的帐户部分始终是 ; 的第一个成员您可以使用稍微简单的分隔列表:
update ";"sv'@[;0;:;"replace"]each";"vs'a from dd