我正在读别人sql,他的代码就像这样
有一个名为user_v
的视图,列path
为数组
select * from user_v where 'USER_TYPE'=path[2]
我不能使用
path[2] = 'USER_TYPE'
答案 0 :(得分:4)
这是一些程序员在语言中采取的预防措施,其中分配和比较很容易混淆,例如C或PHP,其中以下语句看起来是无辜的:
if ( $foo = 1 )
但它实际上将 1
分配给$foo
,而if
将始终评估为true
(至少在PHP中,其中1
为真。意思是if ( $foo == 1 )
。
如果您反转参数,错误会更快显现:
if ( 1 = $foo ) # SYNTAX ERROR
if ( 1 == $foo ) # Desired behaviour
这有时被称为“yoda编码”,位于the coding standards of Wordpress, for example。
另请参阅:Why put the constant before the variable in a comparison?
在SQL中,这种混乱的可能性较小,因为虽然=
可能意味着分配或比较,但很少有错字会选择错误含义的情况。
但是,如果项目使用的每种其他语言的编码标准都要求它,那么通过在SQL中使用它来强化习惯是有意义的,因为我无法想到具体的原因 not < / em>以这种方式写它。
答案 1 :(得分:1)
完全没有区别。
答案 2 :(得分:0)
这是心理学。 您可能希望阅读其他人的代码,然后说:
我的专栏等于2。
当你读到:
其中2等于我的列
你必须停一会儿,回来,向你自己解释。
为了让其他人的生活更轻松,我们保持所有这些看起来很乍看的规则。