Я думаю, что я воспроизвел простую версию вашей проблемы с:
q)t:([] a:`a`b`c`d`e`f; b:`M1`M4`M2`M21`M12`M11)
q)`num xasc update num: "I"$1_'string b from t
a b num
---------
a M1 1
c M2 2
b M4 4
f M11 11
e M12 12
d M21 21
Я только что создал новый столбец, который извлекает целое число b
и поднимается по таблице, используя этот столбец. После этого вы также сможете удалить этот столбец, если хотите использовать что-то вроде
delete num from `num xasc update num: "I"$1_'string b from t
для возврата к нужной таблице.
Примечание: это решение предполагает, что форма месяцев столбец expiry всегда M(months)
Более кратким методом может быть преобразование b
в байты с -8!
, используя что-то вроде:
q)`num xasc update num:-8!'b from t
a b num
----------------------------------
a M1 0x010000000c000000f54d3100
c M2 0x010000000c000000f54d3200
b M4 0x010000000c000000f54d3400
f M11 0x010000000d000000f54d313100
e M12 0x010000000d000000f54d313200
d M21 0x010000000d000000f54d323100
, но этот метод будет просто немного медленнее.