声明的变量的默认值是否始终为null?

时间:2019-06-19 06:03:12

标签: mysql sql variables

我在SQL中声明了许多不同的类型,并且想知道默认值是否对于所有类型始终为null。

Declare @example int
Select @example

Declare @Example2 varchar(max)
Select @Example2

这些都是空值,我声明的大多数类型默认情况下似乎都是空值,对此是否有例外?

4 个答案:

答案 0 :(得分:1)

不知道异常。足够容易进行可靠的测试吗?

declare @bit bit

if @bit is null
    print 'null'

declare @float float
if @float is null
    print 'null'

declare @geo Geography
if @geo is null
    print 'null'

答案 1 :(得分:1)

在MySQL中:

参考MySQL文档:https://dev.mysql.com/doc/refman/8.0/en/declare-local-variable.html

  

要提供变量的默认值,请包含DEFAULT子句。的   值可以指定为表达式;它不必是常数。如果   缺少DEFAULT子句,初始值为NULL。

在SQL Server中

正如微软所说:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/variables-transact-sql?view=sql-server-2017

  

首次声明变量时,其值设置为NULL。

但是当我有一个表变量时,故事有点不同。假设我有一个表变量,如:

DECLARE @testTable AS TABLE
(
    Code INT,
    Firstname VARCHAR(100)
);

在这种情况下,我们不能说@testTable是用NULL初始化的变量。在表变量中,声明它们后,它们是一个不包含任何数据的空表。

答案 2 :(得分:0)

当您声明任何变量且未设置任何值时,则将其视为未定义的值,这就是为什么您将不会获得任何例外的原因,这意味着您将对所有变量始终保持null而不设置任何值。

答案 3 :(得分:0)

在Microsoft sql中,变量的默认值始终为null。您也可以在声明中指定值。请参见以下示例。

Declare @example int=34
Select @example

结果将为34。对于任何其他类型,我在任何情况下都看不到任何例外。