晨鸟科技
标题:
解释SqlServer中null和''的区别
[打印本页]
作者:
Star
时间:
2010-7-30 19:49
标题:
解释SqlServer中null和''的区别
本帖最后由 Star 于 2011-6-9 21:04 编辑
; R. c! z+ I1 {, Q8 ]2 ~
1 X* `; q% r* ?9 `3 x* h2 M# }
详细解释SqlServer中对于空字符的处理
2 ~( F9 _: i6 k b1 D, ?+ a
一次存储过程中,以null作为if判断条件,存储过程执行的结果如:
6 F: f+ i/ ]( n: B
[attach]52[/attach]
2 Z5 X: B+ u- D# i) p% R+ U0 x+ o: U
而将所有的null替换成'',之后,执行结果如:
2 E7 B# C- h+ m+ m% X* F6 x
[attach]51[/attach]
) H! `) C- E! M' E, }# \5 p
2 X; k5 T# D3 @% n) T4 X. q; O
请帮忙解释
作者:
Star
时间:
2010-7-30 20:02
【String.Empty,NULL和""的区别】
! e! _, m/ ?3 x9 m6 i9 t
+ e8 a4 c; `- E* m0 ^
string.Empty不分配存储空间
* Q/ V0 L! `5 Z+ G! J7 T
""分配一个长度为空的存储空间
/ E5 D: d7 D/ P: b# Y ~* \! B
所以一般用string.Empty
+ H4 S; ?0 y2 L. A( F
, D+ a, c: b8 h
为了以后跨平台,还是用string.empty
' B8 ]; {! I& l4 U' K! h7 `
! K( x6 N% W% M+ L/ @3 M5 {
在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:
& R/ X. w: R* R" G2 C7 D! Q
4 L( B* Q9 c( n8 o4 a
string s = "";
; r+ |5 [7 L# d6 I& G' t
string s2 = string.Empty;
, w* z6 }" ~+ E# x; k
. N) z! p1 A+ u) l/ Q+ x
if (s == string.Empty) {
* H: I! L! r; q+ l, h8 e( a c
//
^, I$ G7 B- l$ y
}
2 e0 S5 P9 X. x( q" [% R8 w7 h/ Y
if语句成立
5 Q+ K0 g6 ^1 I; Z1 ?) C
! m l6 e8 D# @- U' E7 E/ ?3 P
3 n. q" p. r. ~7 J3 |/ H
判定为空字符串的几种写法,按照性能从高到低的顺序是:
0 z0 l/ U5 M; z5 J9 q
' U8 a; i& w9 k
s.Length == 0 优于 s == string.Empty 优于 s == ""
- M5 [0 w/ }8 O/ b# B9 W
/ i* o7 C0 [0 R5 ~
, @# w+ V: O! k+ ~* Z& e
关于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