解决方案 »

  1.   

    可以换个思维,在前端录入数据时,比如C#端做个默认值,如果前端没填入,就默认为xxxx,再传输到SQL Server
      

  2.   

    ''并不是没有值 NULL也不是没值 你可以去看看他们的UNICODE都不一样的。
      

  3.   

    程序中发现值是 "" 时,
    如果用 ADO/ADOX,就不要对字段对象赋值;
    如果直接拼 SQL,就用 Default 代替 ''。
      

  4.   

    空字符串,null值和不提供字段值,三者是有区别的. 
    default约束是针对插入记录时不提供字段值时起作用的,如下测试,-- 建测试表
    create table stus
    ( stuid int,
      stuaddress varchar(50)
      constraint pk_stus primary key(stuid) 
    )-- 建default约束
    alter table stus
     add constraint df_stuaddress default('地址不详') for stuaddress -- 测试1 插入空字符串
    insert into stus(stuid,stuaddress)
     select 1,''-- 测试2 插入null值
    insert into stus(stuid,stuaddress)
     select 2,null
     
    -- 测试3 不提供stuaddress值
    insert into stus(stuid)
     select 3-- 结果
    select * from stus/*
    stuid       stuaddress
    ----------- ---------------------
    1           
    2           NULL
    3           地址不详(3 行受影响)
    */