Sqlserver中容易忽略的错误

1.字符串拼接

    a.普通字符串与null字符串拼接    结果为null

declare 
    @str1 varchar(10),
    @str2 varchar(10)
    
set @str1=null
set @str2='hello'

print @str2+@str1
    

 b.普通字符串与‘’ 字符串拼接       结果为普通字符串本身

declare 
    @str1 varchar(10),
    @str2 varchar(10)
    
set @str1=null
set @str2='hello'

print @str2+@str1

2字符串大小比较 

    sql中字符串大小比较规则是第一个字符大者则大,相等则比较第二个,一直比较出大小为止,否则相等,这样会出现  ' 11' <'9'  之类的情况

    因此在使用聚合函数max,min 以及比较大小时,切记不要使用varchar型

3 case   when   使用可可能会出现的错误

   case  when  不同分值 返回值类型一定要相同 且要与第一个分支相同

4. exec(@sql)  返回结果集插入临时表的语法为 insert into  #temp  exec(@sql)   注意 除了exec(@sql) 结果集的字段名要与 #temp 字段名一样外 顺序也要一样。


3.非空与默认值值问题

create table #test
(
  tt varchar(255)  not null   default '',
  qq varchar(255)  not null   default ''
)

insert into #test(qq)  values('qq')  -- 列tt  值为''
insert into #test(tt,qq)  values(null,'qq') --不能将值 NULL 插入列 'tt'
select * from  #test
-- 总结 not null default  含义为不指定值时 采用默认值,但是不能指定null 值

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值