你的位置:首页 > 数据库

[数据库]分享一个小题目


前几天看到一个题目问,什么条件下下面条件回成立

declare @J int

STR(@J) = convert(char(8),@J)

当时我想也没有想,要相等,char那边不填充空格,就是8个长度就OK啦~就是10000000~99999999 嘛╮(╯_╰)╭然后一个漂亮的耳光过来了_(:з」∠)_

 

然后我才泡杯茶,平心静气地分析一下,写个代码执行一下

declare @J int = 1000select str(@J),convert(char(8),@J)      ---------- --------   1000 1000  

再看 STR(@J)  默认10个长度,所以如果char那边只有8的长度,意味着不可能相等~噢耶

 

总结:其实题目答错是次要的。关键是自己对函数不够熟悉,比如str()一类的函数。然后在我们日常的开发工作中,真的要注意这种看似"智能"的函数,如果不注意,在数据通过函数转换类型,或者写条件做隐式转换的时候,就会影响到结果,这个才是我想要说的!!希望这次分享对大家有帮助