前几天看到一个题目问,什么条件下下面条件回成立
declare @J int
STR(@J) = convert(char(8),@J)
当时我想也没有想,要相等,char那边不填充空格,就是8个长度就OK啦~就是10000000~99999999 嘛╮(╯_╰)╭然后一个漂亮的耳光过来了_(:з」∠)_
然后我才泡杯茶,平心静气地分析一下,写个代码执行一下
declare @J int = 1000 select str(@J),convert(char(8),@J) ---------- -------- 1000 1000
再看 STR(@J) 默认10个长度,所以如果char那边只有8的长度,意味着不可能相等~噢耶
总结:其实题目答错是次要的。关键是自己对函数不够熟悉,比如str()一类的函数。然后在我们日常的开发工作中,真的要注意这种看似"智能"的函数,如果不注意,在数据通过函数转换类型,或者写条件做隐式转换的时候,就会影响到结果,这个才是我想要说的!!希望这次分享对大家有帮助