1

我有一个在 mysql 中运行良好的查询,但我需要将它迁移到 db2。

这是mysql查询:

SELECT
    message, host, location
FROM
    table
WHERE 
    host = 'VALUE_HOST' OR location = 'VALUE_LOCATION')
OR
    (message IS NOT NULL AND host IS NULL AND location IS NULL)
ORDER BY
    (IF(message IS NOT NULL,1,0)*8 + IF(host = 'VALUE_HOST',1,0)*4 + IF(location = 'VALUE_LOCATION',1,0)*2) DESC

关键是如何替换“order by”部分中的 if 函数,以便我根据这些条件得到相同的排序结果?

4

1 回答 1

1

DB2 没有 IF 函数,但它有 CASE 表达式:

CASE WHEN message IS NOT NULL THEN 1 ELSE 0 END

或者,如果您只是测试是否相等:

CASE host WHEN 'VALUE_HOST' THEN 1 ELSE 0 END
于 2013-10-17T09:02:57.140 回答