select * from test where ccc is null --返回ccc为null的select * from test where ccc is null --返回ccc为''的
select * from test where isnull(ccc,'')='' --返回ccc为''及null的

解决方案 »

  1.   

    null与''是两回事,与字段的类型无关.null表示字段的值没有任何东西,即没有初始化的
    而''是指字段的值为0长度的字符串
      

  2.   

    nchar 固定长度
    nvarchar  可变长度
      

  3.   

    nchar是定长的字符串,nvarchar是变长的字符串字段类型如果是nchar,如果保存的数据不够宽度,则SQL会自动在后面补空格,而nvarchar则不会。在检索效率上,nchar高于nvarchar
    如果希望列中的数据值大小接近一致,请使用 nchar
    如果希望列中的数据值大小显著不同,请使用 nvarchar
      

  4.   

    nchar 和 nvarchar
    nchar 是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集。nchar(n)包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-92 中的同义词为 national char 和 national character。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。注释
    如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。如果希望列中所有数据项的大小接近一致,则使用 nchar。如果希望列中数据项的大小差异很大,则使用 nvarchar。使用 nchar 或 nvarchar 的对象被赋予数据库的默认排序规则,除非使用 COLLATE 子句赋予特定的排序规则。SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar。SET ANSI_PADDING ON 永远适用于 nchar 和 nvarchar。
      

  5.   

    '' 是长度为零的字符串,和null两回事情
    null不能用比较运算符 比如 : = <= <>  等
      

  6.   

    嗯谢谢,但是nchar和nvarchar有什么区别呢?
      

  7.   

    is null           返回null   不包括''
    is not null       返回非null  包括''
    a is null or a=''  返回null和''nchar     固定长度,不足填空格
    nvarchar  可变长度,不填空格