2014-03-25 89 views
0

我剛剛在一些非常古老的SQL代碼中看到了最古怪的事情。SQL乘數在WHERE子句中等於(* =)

where子句中有一個乘法運算符。它有特殊的意義嗎?它選擇適當的列,但o.nameNULL

我確定這是一個錯字,但我只想確認。

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

這是編寫左連接的老學校方式。 – fancyPants

+0

抱歉,重複的問題。對於「* =」 –

+1

等特殊字符而言,搜索「* =」(用引號引起來)適用於SO,但不適用於谷歌。我會在下次嘗試。 –

回答

0

這個問題已經在這裏找到答案:SQL Server *= Operator?

除了是在舊校園的方式,爲的FancyPants所提及的,它也可能並不總是一致地工作。您應該修改您的SQL語句以將JOINS包含在FROM子句中。

要回答你的問題:*=是一個LEFT OUTER JOIN,而=*是右外連接

0

如前所述,這是一個LEFT OUTER JOIN。同樣,= *是一個RIGHT OUTER JOIN

這就是說,它不應該被使用了,你應該使用完整的語法。

0
*= (LEFT OUTER JOIN) 

=* (RIGHT OUTER JOIN)