q)d:([] f1:`a`b` ;f2:```c; m1:`x``z;m2:``y`z)
f1 f2 m1 m2
-----------
a x
b y
c z z
我想更新f1
& m1
列到f2
& m2
和f1
分别为m1
nulls
有update f1:f2 from d where null f1
update m1:m2 from d where null m1`
;实际上我想将这两个查询合并到一个更新语句中:
If you need java Date object use SimpleDateFormat:
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyyMMddHHmm");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd-HH:mm");
java.util.Date javaDate = inputFormat.parse("201801011200");
System.out.println("java.util.Date=" + javaDate);
System.out.println("output string=" + outputFormat.format(javaDate));
答案 0 :(得分:5)
您可能想要考虑的另一个选择是fill,^
,它允许您使用另一个列表中的项填充一个列表中的空值(在这种情况下,列表是表中的列),例如
q)d:([] f1:`a`b` ;f2:```c; m1:`x``z;m2:``y`z)
q)update f2^f1,m2^m1 from d
f1 f2 m1 m2
-----------
a x
b y y
c c z z
答案 1 :(得分:1)
您可以使用三元矢量条件评估 ?
?[vb;exprtrue;exprfalse]
新查询将是:
q)update f1:?[null f1;f2;f1] , m1:?[null m1;m2;m1] from d
f1 f2 m1 m2
-----------
a x
b y y
c c z z
答案 2 :(得分:0)
填充可用于更新空值:
如果要更新表d,则可以使用:
update f2^f1,m2^m1 from
`d
或
![`d;();0b;`f1`m1!((^;`f2;`f1);(^;`m2;`m1))]
如果要在不更新原始表的情况下显示更新输出,则:
update f2^f1,m2^m1 from d
或
![d;();0b;`f1`m1!((^;`f2;`f1);(^;`m2;`m1))]