空值声明

时间:2010-12-28 19:22:49

标签: sql sql-server sql-server-2005 tsql

我创建了一个名为table1的表,它有4列名为Name,ID,Description和Date。

我创建了它们,如Name varchar(50)null,ID int null,Description varchar(50)null,Date datetime null

我在table1中插入了一条记录,其中包含ID和Description值。所以现在我的table1看起来像这样:

Name   ID   Description  Date

Null    1    First       Null

其中一个要求我修改表格,使列名称和日期应该具有Null值而不是Text Null。我不知道那些

之间有什么区别

我的意思是任何人都可以解释这些选择语句之间的区别:

SELECT * FROM TABLE1 名称为空的

SELECT * FROM TABLE1 WHERE NAME ='NULL'

SELECT * FROM TABLE1 在哪里NAME =''

任何人都可以解释一下吗?

7 个答案:

答案 0 :(得分:2)

在CREATE TABLE中,此处的NULL或NOT NULL varchar(50) null约束,用于确定是否允许NULL。 NOT NULL表示否。

当你插入数据时,你运行了哪个语句?

INSERT TABLE1 VALUES (Null, 1, First, Null)

INSERT TABLE1 VALUES ('Null', 1, First, 'Null')
  • 第一个使用关键字NULL,插入一个NULL(不是空值:没有这样的东西,可以说)。除NULL位图字段
  • 外,不存储任何值
  • 第二个字符串为“null”,存储长度为N,U,L,L + 2个字符的字符

运行SELECT * FROM TABLE1时,客户端工具将显示NULL。

要测试您是否实际拥有NULL或字符串为NULL,请运行此

SELECT ISNULL(name, 'fish'), ISNULL(date, GETDATE())  FROM TABLE1

对于SELECTs

--null symbols. No value stored
SELECT * FROM TABLE1 WHERE NAME IS NULL
--string null
SELECT * FROM TABLE1 WHERE NAME = 'NULL'
--empty string
SELECT * FROM TABLE1 WHERE NAME = ' '

注意:null符号/值不是空字符串。它没有价值,也无法比较。甚至对自己来说。

对于您的DBA,上面的代码与ISNULL将决定存储的内容。

编辑:如果您要存储空符号/值,那么您的DBA应该读取“null bitmap

答案 1 :(得分:1)

数据确实代表空值。文本“Null”是显示文本的查询工具。

答案 2 :(得分:1)

  

其中一个要求我修改表格,使列名称和日期应该具有Null值而不是Text Null。我不知道它们之间有什么区别。

NULL关键字表示任何值的缺席 - 该值未知。

但这不会阻止某人存储拼写出“NULL”的字母,提供数据类型(INT和DATETIME不会)。因此,像IS NULL这样的运算符不能处理拼写为“NULL”的文本,反之亦然 - 使用... LIKE '%NULL%'搜索字符串将不会返回NULL值的记录。 / p>

列的数据类型与SQL Server中的NULL有关。在UNION语句中,您需要将NULL转换为适当的数据类型 - NULL的默认值为INT:

SELECT CAST('2011-01-01 00:00:00' AS DATETIME)
UNION
SELECT CAST(NULL AS DATETIME)

根据提供的有关列和输出的信息,DBA似乎要求您在遇到NULL值时更改用于连接到SQL Server的客户端的文本。结果集。让我想起了我的第一份工作洗碗,并被要求拿到左手抹刀......

答案 3 :(得分:0)

AFAIC,NULL之间没有区别。有不同的列类型。但只要列是文本数据类型,并且它是NULL,它就是文本NULL。

有时会出现关于空字符串(“”)而不是NULL的问题,但您使用的描述似乎并不是指那些。

答案 4 :(得分:0)

字符串“Null”是一个字符串。

NULL的值(或Null或null,SQL在这些事情上不区分大小写)用于表示未知值。如果愿意的话,这是一组空的值。

http://www.w3schools.com/sql/sql_null_values.asp

答案 5 :(得分:0)

NULL,在软件中,象征着没有价值。假设您使用带有null的字符串作为值插入列,请使用null常量。 e.g。

INSERT INTO table1 (Name,ID,Description,Date) VALUES (NULL,1,'First',NULL);

请注意,NULL是SQL中的常量,而不是字符串中的单词“NULL”。

答案 6 :(得分:0)

SELECT * FROM TABLE1 WHERE NAME IS NULL

返回Name为NULL的所有行

SELECT * FROM TABLE1 WHERE NAME = 'NULL'

返回Name等于字符串'NULL'的所有行,不返回Null值

SELECT * FROM TABLE1 WHERE NAME = ' '

返回Name等于一个空格''的所有行,不返回Null值

如果你运行这个语句,它可能有助于清除它的null和它不是

select 
*,
case 
    WHEN name is null THEN  'Its Null alright' 
        ELSE 'It has a value'
END 
FROM TABLE1