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 值