Я хотел бы заменить более чем одно условие:
Пример:
tab:([]a:`a`b`c;b:("abc-d";"rdf,e";"ertfg"))
update b:{ssr[x;"-"|",";" "]} each b from tab
Я не смог заменить оба -
и ,
одновременно, можно использовать только один.
Я пытался соединить оба с помощью b
, но это не сработало.
Вы можете добиться этого, используя (/)
q)update ssr/[;("-";",");" "]each b from tab
a b
---------
a "abc d"
b "rdf e"
c "ertfg"
Вы можете использовать сопоставление регулярных выражений в ssr
q)update ssr[;"[-,]";" "]each b from tab
a b
---------
a "abc d"
b "rdf e"
c "ertfg"
Если заменить одиночные символы другим, избегая ssr
, будет работать намного лучше, поскольку это медленная операция.
q)update {@[x;where any x=/:"-,";:;" "]} each b from tab
a b
---------
a "abc d"
b "rdf e"
c "ertfg"
Аналогично, но на каждой итерации в =
передается полный столбец. Может работать лучше, чем первый ответ.
update @[;;:;" "]'[b;where each any ",-" =\:b] from tab
a b
---------
a "abc d"
b "rdf e"
c "ertfg"