`
wandejun1012
  • 浏览: 2719476 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL SERVER中Null和空串区别

    博客分类:
  • DB
 
阅读更多

一直以来对NULL和空串的区别搞不清楚。

 

空串的直观感受如下图:(通俗的讲,就是不显示NULL且是一片空白的东东)

 


而NULL的直观感受如下图:



 --------------------------------------------------------

 

区别一:

当你用SQL语句以上面这三个字段查询时,用的WHRE条件不一样。

1、查询空串

SQL语句:select * from talbe where BPAgent=''

 

而查询NULL

SQL语句:select * from talbe where ClCmtAccSbjtName is NULL.

 

下成从面向对象的角度来解释这一现象:

空串:其实是字符串的一种,你可以把它当成普通的字符串。我记得在.net中有这样一个常量,叫做String.Empty()。

这也可以从侧面证明空串只是一个普通的字符串,不过他是一个已经被实例化过的OBJECT。

 

NULL:它是一个OBJECT,不过还未被实例化。

 

好了,从上面来看,它们的本质区别就是一个已经被实例化,一个还未被实例化。

 

 

区别二:

从coalesce的用法也可以看得出来。

数据库的数据如下图:


 

1、比如想看BPAgent和CustomerId中第一个不为NULL的。

 

某人这样写:

select coalesce(BPAgent,CustomerId) from table。

它认为出来的应该是CustomerId.

然而出来的结果却是如下图:



 这是为什么呢?

从上面的分析就可以看出,SQL SERVER并不把空串当成NULL,它认为BPAgent就是一个不为NULL的字段。

 

正解:

select coalesce(ClCmtAccSbjtName ,CustomerId) from table。

此时出来的结果如下图:


 

--------------------------------------------------------------

好了,解释完毕。

  • 大小: 623 Bytes
  • 大小: 533 Bytes
  • 大小: 1.2 KB
  • 大小: 568 Bytes
  • 大小: 662 Bytes
分享到:
评论

相关推荐

    sql server字符串非空判断实现方法

    如文中的例子所示,当在动态SQL中使用`SUBSTRING`时,如果字符串为空,可能会导致错误。在这种情况下,可以使用`IF`语句来检查`@sql`变量是否为空: ```sql IF @sql IS NOT NULL AND LEN(@sql) >= 1 SET @sql = ...

    SqlServer类似正则表达式的字符处理问题

    SQL Serve提供了简单的字符模糊匹配功能,比如:like, patindex,不过对于某些字符处理场景还显得并不足够,日常碰到的几个问题有: 1. 同一个字符/字符串,出现了多少次 2. 同一个字符,第N次出现的位置 3. 多个...

    sql语句 截取时间 只显示 年,月,日的格式

    CONVERT 函数是 SQL Server 中的一个内置函数,用于将一个数据类型转换为另一个数据类型。在这里,我们可以使用 CONVERT 函数将 datetime 类型的时间字段转换为 varchar 类型,然后使用格式化参数指定输出的时间格式...

    Sql Server datetime问题

    在讨论SQL Server数据库中的datetime类型时,首先需要了解datetime是SQL Server提供的一个数据类型,用于存储日期和时间值。其范围是从1753年1月1日到9999年12月31日,精度达到3.33毫秒。这是在数据库设计中常用的...

    spring mvc拦截器过滤json中的null值

    在Spring MVC框架中,我们经常需要处理JSON数据,这些数据可能包含null值。在某些情况下,为了保持数据的整洁和避免后端处理null值时出现异常,我们需要在数据传输前过滤掉这些null值。本教程将详细介绍如何使用...

    Oracle null的使用

    null 与 0、空字符串、空格不同,例如在 PL/SQL 中,空串与 NULL 被视为等价值。 Oracle 中空字符串同 null,不同于 MSSQL 中真正在将空串视为一个有意义的标识,即不是一个空值。Sybase 中同样不存在长度为 0 的...

    由空格构成的串与空串是不同的

    当我们讨论“由空格构成的串”和“空串”的区别时,我们是在区分两种特定的字符串类型。 首先,一个由空格构成的串,正如其名,是由一个或多个空格字符组成的字符串。在大多数编程语言中,空格被视为有效的字符,...

    SQL+Server+2005考试试题.doc

    - **解析:** 在SQL中,`%`通配符用于表示任意数量的字符,包括零个字符、一个字符或多个字符。 2. **在已创建表上添加外键** - **题目:** 如何在已经创建好的表上添加一个外键? - **选项:** A. `ALTER TABLE ...

    如何用phpMyadmin查询某表中的某字段为空的数据.pdf

    正确地查询和理解NULL值与空字符串的区别,能帮助我们更准确地获取所需信息。在phpMyadmin中,可以方便地测试和运行这些SQL语句,以便于调试和优化查询。 总的来说,通过phpMyadmin的搜索功能或直接编写SQL语句,...

    编译原理之NULL集、first、follow集C语言实现

    在编译原理中,NULL集、first集和follow集是构造词法分析器(也称为扫描器或lexer)和语法分析器(也称为解析器或parser)的关键概念。这些集合帮助我们理解文法的结构,并在编译器设计中扮演着重要角色。以下是关于...

    delphi分割字符串去空串.txt

    根据给定的文件信息,我们可以总结出以下关于 Delphi 分割...通过以上分析,我们可以看出该函数实现了一种较为常见的字符串分割操作,并且在处理过程中注意到了空字符串的情况,从而确保了返回结果的有效性和准确性。

    java json不生成null或者空字符串属性(详解)

    Gson库可以自动处理Java对象与JSON格式之间的转换,但是默认情况下,所有的属性,无论其值是什么,都会被序列化进JSON字符串中,包括null值和空字符串。 然而,在大数据传输或存储到数据库的场景中,包含大量无意义...

    Java中Integer.valueOf,parsetInt() String.valueOf的区别和结果代码解析

    Java中Integer.valueOf、parsetInt() String.valueOf的区别和结果代码解析 Java中Integer.valueOf、parsetInt()和String.valueOf都是常用的方法,但是它们之间存在着很多的区别,下面我们将通过代码来解释它们之间...

    PolarDB-O的Oracle平滑迁移方案.pdf

    PolarDB-O 支持 Oracle 数据库的多种语法,包括 PL/SQL、Package、VPD、系统视图和系统包、DBLINK、NULL 和空串兼容等,能够满足多种应用场景的需求。 函数兼容 PolarDB-O 支持 Oracle 数据库的多种函数,包括 ...

    Python判断字符串是否为空和null方法实例

    在Python编程语言中,判断字符串是否为空或null是常见的操作,尤其在处理用户输入或从文件、数据库中读取数据时。以下将详细介绍几种在Python中检查字符串状态的方法。 1. **使用字符串长度判断** Python中最直接...

    JSON字符串操作移除空串更改key/value的介绍|angluo-javascript-249028.pdf

    在处理JSON数据时,有时我们需要对其中的空串或值进行处理,比如移除空值、更改key/value等。本文将详细介绍如何在JSON字符串中进行这些操作。 首先,我们来看如何删除JSON对象中的value值。在JavaScript中,我们...

    基于MySQL的数据库中间件Meituan-DBProxy.zip

    添加到黑名单中需要满足两个条件:SQL执行的时间和频率 提供了查看、修改、添加、删除黑名单的功能 黑名单管理提供了将黑名单保存到文件以及从文件中Load到内存中的功能 在手动添加黑名单...

    vfp计算机二级考点-必考

    41. **SQL BETWEEN 和 LIKE 运算符**:用于在 WHERE 子句中指定范围和模式匹配条件。 42. **SQL IS NULL 运算符**:用于判断字段值是否为空。 43. **SQL ALL、IN、ANY、EXISTS 运算符**:用于进行复杂的条件判断。...

    2021-2022计算机二级等级考试试题及答案No.17181.docx

    9. NULL含义:在MySQL中,NULL表示无值,不是空串、数值0或FALSE。正确答案是C。 10. Internet通信基础:TCP/IP协议是Internet上不同计算机间通信的基础。正确答案是D。 11. 电子邮件地址格式:电子邮件地址的正确...

    文法化简 消除空产生式 单元产生式 消除无用符号

    在编译原理中,文法化简是构造和优化编译器前端的重要步骤,它涉及到对形式语言的文法进行简化,以便更高效地处理和分析输入代码。本主题主要关注四种特定的文法化简操作:消除空产生式、消除单元产生式以及消除两类...

Global site tag (gtag.js) - Google Analytics