我从here找到了这个面试问题。给定“客户”表的这些内容:
|---------------------|------------------|------------------|
| Id | Name | ReferredBy |
|---------------------|------------------|------------------|
| 1 | John Doe | NULL |
|---------------------|------------------|------------------|
| 2 | Jane Smith | NULL |
|---------------------|------------------|------------------|
| 3 | Anne Jenkins | 2 |
|---------------------|------------------|------------------|
| 4 | Eric Branford | NULL |
|---------------------|------------------|------------------|
| 5 | Pat Richards | 1 |
|---------------------|------------------|------------------|
| 6 | Alice Barnes | 2 |
|---------------------|------------------|------------------|
以下是编写的查询,用于返回Jane Smith未推荐的客户列表:
SELECT Name FROM Customers WHERE ReferredBy <> 2;
查询结果是什么?为什么?有什么更好的书写方式? 网站上提到的答案是:
SELECT Name FROM Customers WHERE ISNULL(ReferredBy, 0) <> 2;
我的问题是我们如何才能使用COALESCE()
编写相同的查询,因为如上所述,here COALESCE()
仅返回第一个non-null
值。
答案 0 :(得分:2)
在给定的情况下,您可以通过替换函数名称来简单地将System.out.println(spanElement.text());
替换为Document document = Jsoup.connect("https://www.lowes.com/pd/GE-700-sq-ft-Window-Air-Conditioner-115-Volt-14000-BTU-ENERGY-STAR/1000380463")
.header("Cookie", "<Your Cookie here>")
.get();
。
isnull()
为null,则 coalesce()
返回isnull(referredby, 0)
,否则0
。 referredby
就像referredby
为null,coalesce(referredby, 0)
是第一个非null表达式,如果referredby
不为空0
是那个第一个非null表达式,并且返回。
实际上,referredby
和referredby
之间的唯一区别是isnull()
只能接受两个表达式,而coalesce()
可以接受两个或更多。如果您使用两个以上的表达式,则需要使用isnull()
嵌套调用。