Я тестировал функцию db2 max, чтобы увидеть, выбирает ли она NULL как максимум из списка нулей.
Итак, я выполнил этот запрос:
SELECT max (a.colname)
FROM (SELECT null AS colname FROM <replace with any small table name>) a
Это, однако, выдал это сообщение об ошибке:
DB2 Database Error: ERROR [428F5] [IBM][DB2/AIX64] SQL0245N The invocation of routine "MAX" is ambiguous. The argument in position "1" does not have a best fit. SQLSTATE=428F5
Я смог проверить, что я должен был сделать, заменив null
на nullif(1,1)
, и он действительно вернет null
как максимальное значение всписок null
значений.
В соответствии с этим page состояние sql означает, что функция max имеет различные, скажем, реализации или перегрузки, которые могут обрабатывать аргумент a.colname
, иотсюда и ошибка.
Я не уверен, где можно найти больше информации о реализации функции max в db2, поскольку страница IBM ничего об этом не говорит.
Есть идеи о том, как нуль и нуль отличаются по своему типу, особенно в контексте функции max?