||的含义在外部联接中

时间:2019-05-19 16:07:44

标签: sql snowflake

下面的第一个代码带来了期望的结果,但是第二个没有。 使用||有什么含义?运算符?

第一个查询:

SELECT
    a.ID_CUSTOMER,
    a.ID_VENDOR
FROM a
LEFT JOIN b
ON a.ID_CUSTOMER=b.ID_CUSTOMER
AND a.ID_VENDOR=b.ID_VENDOR
WHERE 1=1
AND b.ID_CUSTOMER IS NULL
AND b.VENDOR IS NULL

第二个查询:

SELECT
    a.ID_CUSTOMER,
    a.ID_VENDOR
FROM a
LEFT JOIN b
ON a.ID_CUSTOMER||a.ID_VENDOR=b.ID_CUSTOMER||b.ID_VENDOR
WHERE b.ID_CUSTOMER||b.ID_VENDOR IS NULL

1 个答案:

答案 0 :(得分:2)

||是字符串连接。如果 any 的值为NULL,则结果为NULL,因此等效于:

WHERE b.ID_CUSTOMER IS NULL OR b.ID_VENDOR IS NULL

此外,字符串串联没有“边界”,因此'123'||'456''12'||'3456'匹配。