【问题标题】:kdb+/q table - convert string to numberkdb+/q 表 - 将字符串转换为数字
【发布时间】:2019-04-10 07:46:27
【问题描述】:

假设你有一张桌子

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

并且想把这个字符串解析成一个数字。

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

你怎样才能做到最好?我最初的方法是

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

虽然这将正确解析“123”和“无效”条目,但在尝试解析具有空字符串的行时,它将返回一元运算符 :: 而不是 null。

我当然可以做类似的事情

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

但这似乎有点……丑陋/低效。有没有更好的方法来做到这一点?

谢谢

【问题讨论】:

    标签: kdb


    【解决方案1】:

    尝试"J"$投栏

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

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

    【讨论】:

    • 耶稣!当它本来可以那么简单时,我经历的长度。谢谢,有效
    • 没问题 - 添加到 kx 文档的链接
    【解决方案2】:

    将其转换为 long 怎么样?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多