我刚刚在我们拥有的一些非常古老的 SQL 代码中看到了最奇怪的东西。
where 子句中有一个乘法等于运算符。它有特殊的含义吗?它选择适当的列,但o.name
是NULL
。
我确定这是一个错字,但我只想确认。
select c.name,
c.status,
o.name
from syscolumns c,
sysobjects o
where c.id = object_id('dbo.MyTable')
and c.cdefault *= o.id
order by colid asc
这个问题已经在这里回答:SQL Server *= Operator?
除了是老派的方式,如 fancyPants 提到的,它也可能并不总是一致地工作。您应该修改您的 SQL 语句以在 FROM 子句中包含 JOINS。
要回答您的问题:*=
是左外部连接,而=*
是右外部连接
如前所述,这是一个LEFT OUTER JOIN
。同样,= * 是一个RIGHT OUTER JOIN
也就是说,它不应该再使用了,你应该使用完整的语法。
*= (LEFT OUTER JOIN)
=* (RIGHT OUTER JOIN)
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(5条)