|| 的含义在外连接中

Implications of || in outer joins

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

第一次查询:

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

|| 是字符串连接。如果 any 的值是 NULL,那么结果是 NULL,所以它等价于:

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

此外,字符串连接没有"boundaries",所以'123'||'456'匹配'12'||'3456'