SELECT DB_NAME(0)这可能吗?

我最近看到,当我发出

select DB_NAME(0) 

有一些答案,当我检查sys.databases没有DB ID 0,所以我认为应该有一个NULL返回。 如果我selectDB_NAME(1000)并且没有db id 1000,则返回值为NULL。

我注意到我正在使用的数据库始终显示。

这是正常的吗? 这是一个错误或什么?

我不认为任何数据库将有一个零号码,或一个负数。 根据db_name()的官方Microsoft Books联机文档 :

参数:database_id是要返回的数据库的标识号(ID)。 database_id是int,没有默认值。 如果没有指定ID,则返回当前数据库名称。

所以,我会说这种行为有趣,但它是未定义的,不应该依赖于生产代码。

我一直使用db_name(),没有参数,查找当前数据库的名称。

我不是100%,但不应该使用:

 USE <DBNAME> GO SELECT <STATEMENT> 

如果我对此感到遗憾。