我创建了一个名为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 =''
任何人都可以解释一下吗?
答案 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')
运行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在这些事情上不区分大小写)用于表示未知值。如果愿意的话,这是一组空的值。
答案 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