晨鸟科技

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

解释SqlServer中null和''的区别

[复制链接]
跳转到指定楼层
楼主
发表于 2010-7-30 19:49:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10金钱
本帖最后由 Star 于 2011-6-9 21:04 编辑 # J, x' }6 i+ |7 F/ u) q; Q

5 q* _* F) g/ M: c6 v详细解释SqlServer中对于空字符的处理2 B7 y* ^: |2 E! W
一次存储过程中,以null作为if判断条件,存储过程执行的结果如:) h9 f4 p. N; ?

9 O3 i" j, X' q. y而将所有的null替换成'',之后,执行结果如:2 Y* i8 _; f+ c5 l4 {: i( j) Q4 E

& t2 v5 m6 |) |1 Z: K5 O8 n
) {8 y" V- b! e. o3 u  a3 y* [2 e0 B请帮忙解释

附件: 您需要 登录 才可以下载或查看,没有帐号?注册
沙发
 楼主| 发表于 2010-7-30 20:02:54 | 只看该作者
【String.Empty,NULL和""的区别】
8 V; T; ^( [2 h" _! s
; O$ m5 B- A4 y, o( Z+ astring.Empty不分配存储空间, \3 E6 k. P# K, S8 l
      ""分配一个长度为空的存储空间   ( f$ Q: H  m( `2 ]8 h$ w
      所以一般用string.Empty7 A* [: i3 M9 g* F& |8 E2 G$ q* [

2 @0 ?3 _! Y% W  r* e1 a; u为了以后跨平台,还是用string.empty/ j( }+ y* O" C

* \) x% ^4 F2 ~在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:5 A- |4 c( E' _& k" W1 m/ i0 x
* Y' b: {' k; g" s  z& G" n
string s = "";6 Z- u! t3 j2 X1 O9 I" g$ B
string s2 = string.Empty;5 G) t7 |) a- z9 F" @" d1 T' R

  L2 Q4 ]2 G. l' Pif (s == string.Empty) {
0 w5 z3 \1 f$ R  // 6 R9 _' T# Y# [  w9 V5 A
}
& J& @3 f" U. q, M. Uif语句成立
; d# M+ Z/ y; \9 y" D" \; `' {- B" j. d8 q' d6 p: Q( J
. L) a3 q2 Y) O3 T9 w  d
判定为空字符串的几种写法,按照性能从高到低的顺序是:
! f  D) p* K, W$ X, J0 `( ~6 B2 a% F' h
s.Length == 0      优于 s == string.Empty      优于 s == ""
7 p& f! ^8 O- n
6 d& l) b# |5 f( h
8 G7 Y) c8 Z4 S$ F关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。textBox1.Text的值为零长度字符串 ""。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-22 13:49 , Processed in 6.071522 second(s), 7 queries , Wincache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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