晨鸟科技
标题:
解释SqlServer中null和''的区别
[打印本页]
作者:
Star
时间:
2010-7-30 19:49
标题:
解释SqlServer中null和''的区别
本帖最后由 Star 于 2011-6-9 21:04 编辑
% Q5 y8 G9 A3 A1 M6 \, o5 W% B$ _
, o! h+ I+ t: ^( {! u9 b" D
详细解释SqlServer中对于空字符的处理
0 v8 W7 b8 w8 W4 a- }% v. N8 f
一次存储过程中,以null作为if判断条件,存储过程执行的结果如:
5 C$ i6 o/ z* Z/ A9 O7 }: C
[attach]52[/attach]
8 u+ E" D% {9 l, L# s5 t9 P
而将所有的null替换成'',之后,执行结果如:
+ K, R+ B8 Y8 x+ ^
[attach]51[/attach]
) b2 X# p) L. M' m, J/ ` h8 O% Z
9 B8 w7 @, u" E" F6 Y& j+ p
请帮忙解释
作者:
Star
时间:
2010-7-30 20:02
【String.Empty,NULL和""的区别】
' Y5 n+ B& q: r W6 D2 w: g7 t. K
3 ]1 n; `* v2 I! d% `$ v
string.Empty不分配存储空间
' w& E2 P+ q0 B# x
""分配一个长度为空的存储空间
8 N! q) ~$ Z4 L: [/ x, Z1 D
所以一般用string.Empty
2 B$ Y, t7 b' x+ U1 \& w
4 Z# H$ c. E* }. ^. N0 _2 |
为了以后跨平台,还是用string.empty
0 b( @; x# k. l
/ d5 n( G8 Z2 ]. V0 u( u; U. d6 b
在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:
t+ E5 J5 ~: R8 r. [
( c* i6 ?+ }- y! ?3 {# n
string s = "";
$ X% H2 c! ?( z6 U, \+ j
string s2 = string.Empty;
8 S' l0 d2 V) L# x8 h5 i x
$ l6 l) [7 u `3 G. `
if (s == string.Empty) {
- u, ]6 u2 A ~# {1 ~6 i
//
0 H5 J9 `0 o, T7 S
}
1 e/ p3 U: V# @# {$ V3 r3 N
if语句成立
9 w* E0 n4 ^% Q2 {" d1 ?, ~
7 U6 d# Y9 I5 s' k2 t
; s- J+ [, W7 t: \, h
判定为空字符串的几种写法,按照性能从高到低的顺序是:
/ x& y* h3 \# j
- l1 A P# x3 w
s.Length == 0 优于 s == string.Empty 优于 s == ""
4 f( J: q' ^% Z& A& `# o
6 R1 }$ `9 C* r- A b
" X5 @; f) A7 x* @9 u6 ?: ]
关于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