答案 0 :(得分:2)
因为2.不是真的:
producerA.flatMap(.concat) { _ in return producerB }
.start(Signal.Observer(value: { value in
print("Value \(value)")
}, failed: {error in
print("Error \(error)")
}))
0000-00-00
它没有打印
NULL
答案 1 :(得分:2)
答案 2 :(得分:1)
感谢kiks73,iamsankalp89和moscas的回答(kiks73's answer - iamsankalp89's answer - moscas's answer),这有助于我找到解决方案/解释我遇到的奇怪行为。
奇怪行为的原因是DataGrip使用的 JDBC驱动程序如何处理零日期。
它会从数据库中将日期作为零接收,然后将其转换为null 。
由于JDBC转换,这将导致DataGrip将零日期读取为空值。
Howevenr,因为它在JDBC层(而不是数据库层)完成,数据库不会将这些值视为空值。
为了测试,我通过mysql shell运行数据库连接和查询,这将打印零而不是空值。
答案 3 :(得分:1)
在Ubuntu mysql中测试:
SELECT CAST('0000-00-00' AS DATE) ;
上述查询的值为null,
mysql> SELECT CAST('0000-00-00' AS DATE);
+----------------------------+
| CAST('0000-00-00' AS DATE) |
+----------------------------+
| NULL |
+----------------------------+
1 row in set, 1 warning (0.00 sec)
SELECT CAST('0000-00-00' AS DATE) IS NULL;
在上面的查询中,您尝试使用 IS NULL 函数检查值是否为空,答案是 True ,因此只有它显示的值为1。 / p>
mysql> SELECT CAST('0000-00-00' AS DATE) IS NULL;
+------------------------------------+
| CAST('0000-00-00' AS DATE) IS NULL |
+------------------------------------+
| 1 |
+------------------------------------+
1 row in set, 1 warning (0.00 sec)
使用其他人进行测试时
SELECT CAST('0000-00-00' AS DATE) ;
上述查询的值不会显示为 NULL ,
SELECT CAST('0000-00-00' AS DATE) IS NULL;
上述查询的结果为 False ,因此仅显示为 0