sql server的sql语句怎么判断一个字段是不是为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server的sql语句怎么判断一个字段是不是为空相关的知识,希望对你有一定的参考价值。

1、首先我们准备一个数据表。

2、然后表中的字段如下图所示。

3、接着我们用COL_LENGTH函数进行字段的判断。

4、然后点击执行按钮。

5、接下来我们就可以看到输入了下图的内容,代表是存在的。

6、当然我们还可以写Else的分支语句,在里面添加不存在时候的逻辑。在SQL Server中判断某个字段是否存在就用COL_LENGTH函数

参考技术A

使用 is null 或 is not null 来处理列的空值。

语法为:

列名 is null (字段为空返回true ,不为空返回 false)

列名 is not null (字段为空返回false,不为空返回 true)

例如:

select case when a is null then 1 else 0 end from aaa

语法大意:如果a列 为空显示1,不为空显示0。

扩展资料:

注意事项

字段内容为空有两种情况

1.为null

2.为字符串的空''

语句如下:

select * from table where column is null or trim(column)=''

这样就可以排除字段内容为null、''的。 

判断某个字段不为空

select * from table where trim(column) != ''

曾经尝试判断null:is not null.但是不起作用,放弃。。。直接 trim(column) != '' 就能解决。

参考技术B

空分两种 

1 空值 null  2 空字符串 '' 

select * from [表名] where [列名] is null 
select * from [表名] where [列名] =''

请采纳!

参考技术C 最近写了一个查询空字符串的sql语句,发现xx is null,和xx is not null,都没有用。如果你理解null和“”的区别,你就会发现,这两个代表的是不同的意思,一个是空对象,一个是空字符串。
所以,如果是空对象可以这样写:select * from xxx where xx is null,非空对象:select * from xxx where xx is not null
如果是空字符串这样写:select * from xxx where datalength(xx)<>1,表示datalenght(xx)不等于1,空字符串在sql server数据库里,存储的长度是1,而不是0,空对象存储的datalength(xx)等于0,表示是空对象。
参考技术D sql server 中使用 is null 或 is not null 来处理列的空值。

语法为:
列名 is null (字段为空返回true ,不为空返回 false)
列名 is not null (字段为空返回false,不为空返回 true)

例:
select case when a is null then 1 else 0 end from aaa

语法大意:如果a列 为空显示1,不为空显示0

SQL Server去重和判断是否为数字

sql 语句查询时去掉重复项:

使用 distinct 去掉重复项:

首先可以明确的看到存在重复的名字,那么接下来就让我们试试使用 distinct 去重吧。

1   select distinct * from Student

咦,怎么没效果呢?原来,distinct 是根据所查询的字段去重的。* 表示所有的字段,可以明确的看到字段 S_Id 和 S_StuNo 是不可能有重复的,因为一个为主键和自增长的标识列,一个有 unique (唯一)的约束。

既然明白了这一点,那下面就根据 S_Name,S_Sex,S_Height 这三个字段去重吧:

1   select distinct S_Name,S_Sex,S_Height from Student

sql判断字符串是否为数字:

方法一: 使用sql server的内置函数 ISNUMERIC():

1   select ISNUMERIC(\'123\')        -- 返回 1 
2   select ISNUMERIC(\'123.12\')    -- 返回 1 
3   select ISNUMERIC(\'a123.12\')    -- 返回 0 
4   select ISNUMERIC(\'abc\')        -- 返回 0 

函数 ISNUMERIC() 返回结果为 1 表示全是数字,结果为 0 表示有除了数字的其他字符,但是“.”(小数点也会被当做其中一部分)。

方法二: 匹配字符串中是否存在除了数字之外的其他字符(小数点也算作其他字符)

 1 if((\'123\' not like \'%[^0-9]%\'))    -- 数字
 2 begin
 3     select \'数字\'
 4 end
 5 else
 6 begin
 7     select \'非数字\'
 8 end
 9 
10 if((\'a123\' not like \'%[^0-9]%\'))    -- 非数字
11 begin
12     select \'数字\'
13 end
14 else
15 begin
16     select \'非数字\'
17 end
18 
19 if((\'123.1\' not like \'%[^0-9]%\'))    -- 非数字
20 begin
21     select \'数字\'
22 end
23 else
24 begin
25     select \'非数字\'
26 end

当然,我们也可以根据这种方式,定义一个自定义函数,这个后面再说。

sql 查询出某字段出现最多次数的值:

1 -- 查询出表 Student 中名字(S_Name)出现次数最多的名字
2   select top 1 S_Name,COUNT(1) from Student group by S_Name order by COUNT(1) desc

sql server [case  when  then  else  end]:

1 select S_StuNo 学号,S_Name 姓名,
2 case S_Sex when \'\' then \'男生\' when \'\' then \'女生\' else \'保密\' end 性别,        -- 方式一
3 case when S_Sex=\'\' then \'男生\' when S_Sex=\'\' then \'女生\' else \'保密\' end 性别,    -- 方式二
4 S_Height 身高
5 from Student

sql OBJECT_ID、OBJECT_NAME、OBJECT_DEFINITION:

 1 if (OBJECT_ID(\'Student\') is not null)    --判断是否存在 Student 这个表
 2 begin
 3     select \'表已存在\'
 4 end
 5 else
 6 begin
 7     select \'表不存在,请创建\'
 8 end
 9 
10 --指定一个临时表名,则必须在临时表名前面加上数据库名,例如:
11 IF OBJECT_ID(\'tempdb..#table1\') is not null        --判断临时表 table1 是否存在,
12 select \'表已存在\'
13 else
14 select \'表不存在,请创建\'
15 
16 select OBJECT_ID(\'Student\')        -- 返回 245575913  根据对象名称返回对象ID 
17 
18 select OBJECT_NAME(\'245575913\')        -- 返回 Student  根据对象ID返回对象名称
19 
20 select OBJECT_DEFINITION(\'245575913\')    --返回对象的源文本
21 
22 select OBJECT_DEFINITION(OBJECT_ID(\'Student\')) 
示例,返回系统存储过程 sys.sp_columns 的定义:
1 SELECT OBJECT_DEFINITION (OBJECT_ID(N\'sys.sp_columns\'));

OBJECT_ID语法: OBJECT_ID ( \'[ database_name . [ schema_name ] . | schema_name . ] object_name\' [ ,\'object_type\' ] )
参数:
\' object_name \' (必填)
是要使用的对象。 object_name是varchar或nvarchar。 如果object_name是varchar,它将隐式转换为nvarchar。 可以选择是否指定数据库和架构名称。
\' object_type \' (可选)
架构范围的对象类型。 object_type是varchar或nvarchar。 如果object_type是varchar,它将隐式转换为nvarchar。
返回类型:

return int
PS:对于空间索引,OBJECT_ID 返回 NULL。出现错误时,返回 NULL。
OBJECT_NAME语法: OBJECT_NAME ( object_id [, database_id ] ) 
参数:

\' object_id \' (必填)
要使用的对象的 ID。 object_id是int ,假定在指定的数据库中,或在当前数据库上下文中为架构范围的对象。
\' database_id \'(可选)
要在其中查找对象的数据库的 ID。 database_id是int。
返回类型:

return nvarchar(max)
PS:出现错误时或调用方没有查看对象的权限时,将返回 NULL。 如果目标数据库的 AUTO_CLOSE 选项设置为 ON,则此函数将打开此数据库。
用户只能查看符合如下条件的安全对象的元数据:该安全对象为该用户所有,或已授予该用户对该安全对象的权限。
也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_NAME)可能返回 NULL。
OBJECT_DEFINITION语法:OBJECT_DEFINITION ( object_id )
参数:
\' object_id \' (必填)
要使用的对象的 ID。 object_id是int,和假定以表示当前的数据库上下文中的对象。
返回类型:
return nvarchar(max)
PS:出现错误时或调用方没有查看对象的权限时,将返回 NULL。

参考:
https://msdn.microsoft.com/zh-cn/library/ms176090.aspx

以上是关于sql server的sql语句怎么判断一个字段是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

如何判断SQL SERVER表中字段为空

SQL语句case怎么判断这个字段为空

SQL语句case怎么判断这个字段为空

SQL Server去重和判断是否为数字

在sql语句中怎么判断一个字段是不是包含在另一个字符串中

sql 查询语句怎么判断一个字段为空