7 个解决方案
#1
默认情况下,如果字段有NULL值,那么你必须使用
“字段 IS NULL”来判断,而不是“字段=''”
但是当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。
使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。
使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,
使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。
如果你不想让字段为NULL,那么创建表给个默认值''就可以了
例如
“字段 IS NULL”来判断,而不是“字段=''”
但是当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。
使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。
使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,
使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。
如果你不想让字段为NULL,那么创建表给个默认值''就可以了
例如
CREATE TABLE T(COL VARCHAR(20) DEFAULT(''))
#2
set nocount on
declare @t table(ID int ,[Name] varchar(10))
insert @t select 1,'A'
insert @t select 2,NULL
insert @t select 3,''
insert @t select 4,'B'
select * from @t where [Name]is null
select * from @t where [Name]=''
select * from @t where isnull([Name],'')=''
ID Name
----------- ----------
2 NULL
ID Name
----------- ----------
3
ID Name
----------- ----------
2 NULL
3
declare @t table(ID int ,[Name] varchar(10))
insert @t select 1,'A'
insert @t select 2,NULL
insert @t select 3,''
insert @t select 4,'B'
select * from @t where [Name]is null
select * from @t where [Name]=''
select * from @t where isnull([Name],'')=''
ID Name
----------- ----------
2 NULL
ID Name
----------- ----------
3
ID Name
----------- ----------
2 NULL
3
#3
加个约束DEFAULT('')
#4
可是查询时我选择字段=''的条件时却查不出来,如果在去掉NULL后,就可以查询出来,NULL和空有什么区别,怎么让字段默认没有NULL,就是为空!
=============================
你可以将条件写成 where col=NULL
NULL和空有什么区别?
null就是空,而''不是代表空的意思,而是字符串长度为零的空字符串,类型不同.
=============================
你可以将条件写成 where col=NULL
NULL和空有什么区别?
null就是空,而''不是代表空的意思,而是字符串长度为零的空字符串,类型不同.
#5
SQL在建立变长字符型变量时,如果不提供这个字段值,那么就会在数据库中显示null,但是这个null不是字符串'null',而是空值就是什么都没有,所以用字段名='null'是检索不出来的,只能用空值操作函数 IS NULL或者IS NOT NULL来判断.如果想在数据表中不输入值的地方显示空白,可以在建表的时候给该字段加上一个默认值''就可以了,语句为 [字段名称 类型 DEFAULT(''))].
#6
up,楼上的说得挺详细的
#7
up
#1
默认情况下,如果字段有NULL值,那么你必须使用
“字段 IS NULL”来判断,而不是“字段=''”
但是当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。
使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。
使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,
使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。
如果你不想让字段为NULL,那么创建表给个默认值''就可以了
例如
“字段 IS NULL”来判断,而不是“字段=''”
但是当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。
使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。
使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,
使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。
如果你不想让字段为NULL,那么创建表给个默认值''就可以了
例如
CREATE TABLE T(COL VARCHAR(20) DEFAULT(''))
#2
set nocount on
declare @t table(ID int ,[Name] varchar(10))
insert @t select 1,'A'
insert @t select 2,NULL
insert @t select 3,''
insert @t select 4,'B'
select * from @t where [Name]is null
select * from @t where [Name]=''
select * from @t where isnull([Name],'')=''
ID Name
----------- ----------
2 NULL
ID Name
----------- ----------
3
ID Name
----------- ----------
2 NULL
3
declare @t table(ID int ,[Name] varchar(10))
insert @t select 1,'A'
insert @t select 2,NULL
insert @t select 3,''
insert @t select 4,'B'
select * from @t where [Name]is null
select * from @t where [Name]=''
select * from @t where isnull([Name],'')=''
ID Name
----------- ----------
2 NULL
ID Name
----------- ----------
3
ID Name
----------- ----------
2 NULL
3
#3
加个约束DEFAULT('')
#4
可是查询时我选择字段=''的条件时却查不出来,如果在去掉NULL后,就可以查询出来,NULL和空有什么区别,怎么让字段默认没有NULL,就是为空!
=============================
你可以将条件写成 where col=NULL
NULL和空有什么区别?
null就是空,而''不是代表空的意思,而是字符串长度为零的空字符串,类型不同.
=============================
你可以将条件写成 where col=NULL
NULL和空有什么区别?
null就是空,而''不是代表空的意思,而是字符串长度为零的空字符串,类型不同.
#5
SQL在建立变长字符型变量时,如果不提供这个字段值,那么就会在数据库中显示null,但是这个null不是字符串'null',而是空值就是什么都没有,所以用字段名='null'是检索不出来的,只能用空值操作函数 IS NULL或者IS NOT NULL来判断.如果想在数据表中不输入值的地方显示空白,可以在建表的时候给该字段加上一个默认值''就可以了,语句为 [字段名称 类型 DEFAULT(''))].
#6
up,楼上的说得挺详细的
#7
up