таблица kdb + / q - преобразовать строку в число - PullRequest
0 голосов
/ 10 апреля 2019

предположим, что у вас есть таблица

tbl:([] id:("123"; ""; "invalid"))

и вы хотите разобрать эту строку в число.

Неверные значения - в приведенном выше примере как пустая строка "", так изначение «недопустимо», должно быть проанализировано до нуля (0Nj).

Как лучше всего это сделать?Мой первоначальный подход был

select id:.[value;;0Nj] each enlist each id from tbl

Но, хотя он будет правильно обрабатывать как «123», так и «недействительные» записи, он будет возвращать унарный оператор :: вместо нуля при попытке проанализировать строкус пустой строкой.

Конечно, я мог бы сделать что-то вроде

select id:.[value;;0Nj] each enlist each id from update id:string (count id)#`invalid from tbl where id like ""

, но это кажется немного уродливым / неэффективным.Есть ли лучший способ сделать это?

Спасибо

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Попробуйте "J"$ разыграть колонну

q)select "J"$id from tbl
id
---
123

https://code.kx.com/v2/ref/tok/

1 голос
/ 10 апреля 2019

как насчет того, чтобы просто бросить его на долго?

q)update id:"J"$id from `tbl
`tbl
q)select from tbl where not null id
id
---
123
...