晨鸟科技

标题: 解释SqlServer中null和''的区别 [打印本页]

作者: Star    时间: 2010-7-30 19:49
标题: 解释SqlServer中null和''的区别
本帖最后由 Star 于 2011-6-9 21:04 编辑
- t) ^8 Z5 b6 K. |
: M3 }3 N- x- K6 f详细解释SqlServer中对于空字符的处理- ~8 e% k; T$ l- z7 ^2 p7 S( _
一次存储过程中,以null作为if判断条件,存储过程执行的结果如:
2 {  P. }- V7 h- p/ t[attach]52[/attach]; q+ }* E3 I  j" Y$ Q7 r5 F( y5 X
而将所有的null替换成'',之后,执行结果如:# h  E. Q' z. C4 S9 \% Y
[attach]51[/attach]
$ ^, e  G) Q% q  u) ~8 b
& u4 x1 i3 ]; H请帮忙解释
作者: Star    时间: 2010-7-30 20:02
【String.Empty,NULL和""的区别】( k/ b( s' i! i  a, v, }

6 R$ X8 ]; K- N; |5 ^+ estring.Empty不分配存储空间* l8 P' b' G0 P# L; r
      ""分配一个长度为空的存储空间   $ e1 {8 W: N% H( I5 [4 O. E2 ~
      所以一般用string.Empty) X: o) p3 x5 h

9 r1 g. P8 T1 |- s: U为了以后跨平台,还是用string.empty- i4 J5 e) b/ o

- s: [! {# o& z3 \7 z4 R# V在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:
; ^( \# ~: b4 I% L* ^' {
! }* L; r% ^# \& c* g string s = "";
0 I# T; |8 d9 E( {  @0 astring s2 = string.Empty;
8 Y9 ~4 _4 D( A9 f$ f1 k: G  v$ R8 a. l% C" p) W4 V
if (s == string.Empty) {
" E# p( ]9 I' d$ P# N* U+ f! Q  //
# [. m  L+ F0 `+ S8 G}
: \" c4 t! ~" j% z- O$ h1 {if语句成立 ! L+ i* `9 z1 G, G2 p4 A: J7 A
: F. C) Q/ Q; l1 A

. _0 L* p& R. M3 |8 Z判定为空字符串的几种写法,按照性能从高到低的顺序是:
- j7 M, `0 ]  s+ P) M. ]; \
- E8 r- V: f& ^8 q1 H" rs.Length == 0      优于 s == string.Empty      优于 s == ""
' O; `" @6 C/ T2 a# e, G  J1 e. a1 s5 Q
& Q- G7 J! T0 N. i3 @: C6 y
关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。textBox1.Text的值为零长度字符串 ""。




欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/) Powered by Discuz! X3.2