晨鸟科技

 找回密码
 注册
搜索
查看: 12246|回复: 1
打印 上一主题 下一主题

解释SqlServer中null和''的区别

[复制链接]
跳转到指定楼层
楼主
发表于 2010-7-30 19:49:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10金钱
本帖最后由 Star 于 2011-6-9 21:04 编辑
( h+ P7 k7 `6 }) q1 w* n  l# c* [" Q9 `# b$ _
详细解释SqlServer中对于空字符的处理2 t% P* ?; t3 e8 {9 s* a
一次存储过程中,以null作为if判断条件,存储过程执行的结果如:
8 d( S" {' l3 T2 t% Q2 t
  M- Q- b( V1 h" B9 B而将所有的null替换成'',之后,执行结果如:/ c( f5 h/ z! ~
; w7 w2 c# \7 A- r' n
6 R. {( D5 [3 M
请帮忙解释

附件: 您需要 登录 才可以下载或查看,没有帐号?注册
沙发
 楼主| 发表于 2010-7-30 20:02:54 | 只看该作者
【String.Empty,NULL和""的区别】
& G2 Q1 ?6 J: A! A/ H2 ^, k6 d& i( u0 T
string.Empty不分配存储空间& T, ?' _  g1 a4 r) K% J/ B: G
      ""分配一个长度为空的存储空间   
; [+ E! y' t3 y' v& {& g( y9 _      所以一般用string.Empty
6 `8 o  @) m' d' ?9 r6 K& C7 v0 D/ g
为了以后跨平台,还是用string.empty
9 ?/ E# _7 V4 w" X& f- Q8 d) j7 M, u( m# ?- g: Q) y5 L. x% E
在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:9 x" Q4 S" W: p) u. I9 r+ m
9 b! u0 ?/ Y! e6 O8 }
string s = "";
# Q; W( L& K! y1 fstring s2 = string.Empty;
5 O8 f  `  `& F3 U
, A* K, t/ R$ c. N3 r- v. t% q  Fif (s == string.Empty) {
) w6 d$ G& q; [; @4 z( ~  //
. c- w2 L  h8 g( F5 l}8 G' S( o! s1 P; E- W
if语句成立 0 o: k1 k8 i' w5 ^9 _2 s+ S

, T% V5 Y0 v& \  T# z- F2 p2 Y+ ]" i
判定为空字符串的几种写法,按照性能从高到低的顺序是:
) N9 M4 {3 B, W% q9 z4 c7 l4 x8 e6 U) h( e6 Y
s.Length == 0      优于 s == string.Empty      优于 s == "" ; G& Q3 s% K" ]& C4 G

) x- f: L8 R7 h( z- [8 i' s& i$ w* D( c% e$ R3 E& r, n4 Z
关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。textBox1.Text的值为零长度字符串 ""。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|晨鸟科技 ( 沪ICP备09012675号 )

GMT+8, 2025-8-13 20:40 , Processed in 6.068593 second(s), 7 queries , Wincache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表