如何传递NULL数据类型?

时间:2009-06-26 11:07:27

标签: java .net database null

将没有数据的值传递到数据库时,NULL的数据类型是什么?

13 个答案:

答案 0 :(得分:6)

NO 数据类型为NULL。 NULL本身意味着数据的 ABSENCE 。当没有数据时,它怎么会有类型?

答案 1 :(得分:2)

Null在SQL中没有特定的数据类型。任何可以为null的列或变量都可以包含null。 Null永远不等于或不等于任何东西。您可以将保持null的变量转换为另一个变量并获取null,例如:

declare @a integer
set @a = null
select convert (float, @a)

----------------------
NULL

(1 row(s) affected)

答案 2 :(得分:1)

NULL的数据类型与0的数据类型无关:它可以是INTEGERFLOATVARCHAR。你无法从价值中分辨出来。

NULL几乎是每个数据类型域中的合法值,这意味着缺少实际值。

在某些RDBMS的上下文之外讨论数据类型也没有意义。

例如,在SQLite中,数据类型是值绑定的,而不是列绑定的,NULL本身就是第一类数据类型。

Oracle中,更严格地定义了数据类型。例如,此查询有效:

SELECT  COALESCE(dt, i)
FROM    (
        SELECT  CAST(NULL AS DATE) AS dt, CAST(NULL AS DATE) i
        FROM    dual
        ) q

而这不是:

SELECT  COALESCE(dt, i)
FROM    (
        SELECT  CAST(NULL AS DATE) AS dt, CAST(NULL AS NUMBER) i
        FROM    dual
        ) q

,因为后一个查询返回两列不同的数据类型,它们的值都为NULL,而COALESCE要求两个参数都具有相同的数据类型。

最好说任何数据类型的NULL可以隐式转换为另一种数据类型的NULL

例如,如果VARCHAR的值为INTEGER,则0可以隐式转换为'some_string',但如果NULL的值为{{1}}则不能。{/ 1} >

对于{{1}},任何数据类型都可以隐式转换为任何其他数据类型,如果允许它们之间的隐式转换。

答案 3 :(得分:0)

NULL是'undefined'的值。因此,数据库中的任何类型都可以是“未定义”,因为它是列的属性:特定列的行值可以是“未定义”,这意味着它是“NULL”,无论类型是什么。只要列可以为空。

答案 4 :(得分:0)

我认为DBNULL或NULL是一种特殊类型。

答案 5 :(得分:0)

通常NULL是它自己的数据类型 - 类型1是“INTEGER”,NULL类型的类型是“NULL”

答案 6 :(得分:0)

答案 7 :(得分:0)

我认为这个问题会让自己失败。如果NULL具有数据类型,则不会强制您在其默认值之外的每个实例化时更改它。例如,当您将其创建为角色,然后将其强制转换为对象的值?

NULL==NULL

就是这样。

答案 8 :(得分:0)

实际上,在PowerShell中比较$ null -eq $ null给出了False。 另外,-not $ null会给你True,所以在这里它似乎被表示为False。我知道,PowerShell可能不是一个很好的例子,但仍然是:)

答案 9 :(得分:0)

在SQL中,NULL是一个可以应用于任何SQL类型的“标记”(不是值)。所以它与类型正交。

答案 10 :(得分:0)

通常SQL NULL没有与之关联的类型。但也有例外。数据库引擎postgresql和derby(javadb)要求null具有类型。换句话说,它们不支持无类型的null。因此NULL IS NULL等查询条件可能会失败。这里,必须为NULL提供一个类型,即处理NULL值的目标的预期类型。在这种情况下,这看起来很愚蠢,因为没有目标,这可能适得其反。

请参阅CAST function: -- you must cast NULL as a data type to use it

请参阅Queries with guarded null Parameter failAdd support for setObject(arg, null)

请为这些问题投票,以便奇怪的数据库引擎改变他们的方式。

答案 11 :(得分:0)

Prabhahar,每种类型的数据库驱动程序都有自己的处理方式NULL。您必须检查特定数据库的驱动程序API。

例如,如果您使用的是Java Derby数据库,只需传入Java本机类型,如Ian Bjorhovde's answer to "Derby's Handling of NULL Values"所示:

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
VALUES ( 
  1000, 'Lukas', 'Eder', 
  '1981-07-10', null, null 
);

以下是JDBC:Inserting null to Integer column的另一个null示例:

pst.setNull(4, java.sql.Types.INTEGER);

答案 12 :(得分:-1)

NULL可以转换(转换)为任何数据类型,但与NULL的数据类型比较始终返回FALSE