如何将此 usql 转换为有效的 sql 查询

How to convert this usql to valid sql query

SELECT DISTINCT 
d.id AS id, 
CASE
    WHEN (c.a = 'UNK' ? NULL : c.a) IS NOT NULL THEN c.a
    WHEN (b.a = 'UNK' ? NULL : b.a) IS NOT NULL THEN b.a
    WHEN (c.e = 'UNK' ? NULL : c.e) IS NOT NULL THEN c.e
    ELSE b.e
END AS output,
FROM 
   db.table
...random irrelevant joins..

我已将问题追溯到代码的案例结束部分。我收到一个解析异常错误。我假设 (c.a = 'UNK' ? NULL : c.a) 不受支持。我将如何转换它?

是:

SELECT DISTINCT 
d.id AS id, 
CASE
    WHEN c.a != 'UNK' THEN c.a
    WHEN b.a != 'UNK' THEN b.a
    WHEN c.e != 'UNK' THEN c.e
    ELSE b.e
END AS output,
FROM db.table;

或者 (c.a = 'UNK' ? NULL : c.a) IS NOT NULLNULLIF(c.a, 'UNK') IS NOT NULL 相同 => c.a != 'UNK'

如果我理解正确的话,简单的比较一下就可以了:

SELECT DISTINCT d.id AS id, 
       (CASE WHEN c.a <> 'UNK' THEN c.a
             WHEN b.a <> 'UNK' THEN b.a
             WHEN c.e <> 'UNK' THEN c.e
             ELSE b.e
        END) AS output,
FROM . . .

NULL 未通过 <> 比较,因此这在语义上应该是等价的。