kdb + / q表-将字符串转换为数字

时间:2019-04-10 07:46:27

标签: q kdb

假设您有一张桌子

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

并想将此字符串解析为数字。

无效值-在上面的示例中,空字符串“”和值“ invalid”都应解析为null(0Nj)。

您怎么能做到最好?我最初的方法是

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

但是,尽管这将正确地解析“ 123”和“ invalid”两个条目,但在尝试使用空字符串解析行时,它将返回一元运算符::而不是null。

我当然可以做类似的事情

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

但这似乎有点..丑陋/效率低下。有更好的方法吗?

谢谢

2 个答案:

答案 0 :(得分:2)

尝试"J"$投射列

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

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

答案 1 :(得分:1)

把它放长一点怎么样?

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