2

我从同事那里继承了一些代码,我注意到一些代码的方式不一致例如,以下之间是否存在任何功能差异:

sum(case when (elephants = 0)then 1 else 0 end),

sum(case when (elephants = '0')then 1 else 0 end),

sum(case when (elephants IN (0))then 1 else 0 end),

sum(case when (elephants IN ('0'))then 1 else 0 end);

如果在查找单个值时使用单个 qutoes 或 IN vs = 之间没有功能差异,那么还有什么其他原因可以解释它(除了草率的代码)?

4

3 回答 3

3

x IN (a, b, c)意味着x = a OR x = b OR x = c。当IN列表包含单个项目时,x IN (a)仅表示x = a.

至于 和 的区别0'0'前者是整数,后者是字符串。后者可以转换成整数,所以whenelephants也是整数,elephants = 0elephants = '0'测试同样的东西。

四者并无实质区别。

于 2012-11-02T15:12:56.173 回答
1

简而言之:

= 0 //equal to the number zero
= '0' //equal to the string "0"
IN (0) //appears in the list in parenthesis. In this case, the single-item list of numerical zero
IN ('0') //appears in the list in parenthesis. In this case, the single-item list of string "0"
于 2012-11-02T15:14:20.297 回答
1

=用于单个值,但IN可以在一个集合中有多个值。

例如=

a = b

但是对于IN, 而不是写多个OR

a = 1 OR a = 2 or a = 3

你可以把它写成

a IN (1,2,3)

关于单引号,如果列的数据类型是数值,服务器会自动将字符串值解析为数值。

于 2012-11-02T15:12:05.993 回答