我刚看到一些非常旧的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
答案 0 :(得分:0)
此问题已在此处得到解答:SQL Server *= Operator?
除了作为老式学校的方式之外,正如fancyPants所提到的那样,它也可能并不总是能够始终如一地运作。您应该修改SQL语句以在FROM子句中包含JOINS。
要回答您的问题:*=
是LEFT OUTER JOIN,而=*
是一个正确的外部联接
答案 1 :(得分:0)
如上所述,这是一个LEFT OUTER JOIN
。同样,= *是RIGHT OUTER JOIN
尽管如此,它不应再被使用了,你应该使用完整的语法。
答案 2 :(得分:0)
*= (LEFT OUTER JOIN)
=* (RIGHT OUTER JOIN)