Oracle从表中选择max id返回null值

use*_*134 4 oracle max oracle11g

我有查询:

SELECT MAX(prod_id) FROM products;
Run Code Online (Sandbox Code Playgroud)

如果有记录,则返回最大值.但是,如果我截断表并运行相同的查询,我无法获取maxid.

Roh*_*han 20

如果你想查询一个表的列并怀疑max函数可能返回null,那么你可以返回0,以防遇到null

SELECT NVL(MAX(P.PROD_ID), 0) AS MAX_VAL
 FROM PRODUCTS P
Run Code Online (Sandbox Code Playgroud)

如果您提到的列没有遇到任何值,则返回至少0()


Ben*_*Ben 5

是的,通过截断该表,您已经删除了其中的所有数据,而无需使用commit。因此,表中没有数据max,什么都不是什么也没有。


Ger*_*ght 0

如果截断表,则表中不会留下任何行。根据定义,Max() 在针对空表运行时返回 NULL...或者我在这里错过了什么?