2013-03-24 70 views
1

是否可以在T-SQL中定義自定義謂詞?這樣的情況下我可以寫:在T-SQL中創建自定義謂詞函數?

SELECT a,b,c 
FROM MyTable 
WHERE dbo.myCustomPredicate(a) 

一個簡單的解決辦法是建立一個標量值函數dbo.myCustomPredicate返回了一下,改變WHERE子句

WHERE dbo.myCustomPredicate(a)=1 

只是好奇,如果可以避免「= 1」。

+1

不; SQL中沒有布爾數據類型。 – 2013-03-24 12:40:43

+0

@PieterGeerkens - SQL:1999有一個布爾數據類型。 – 2013-03-24 15:27:38

+0

@MartinSmith:更正:T-SQL沒有布爾數據類型。 – 2013-03-24 15:32:52

回答

3

不,這是不可能的。

SQL Server不支持ANSI SQL布爾數據類型。

你不會說什麼dbo.myCustomPredicate的實現,但很可能WHERE dbo.myCustomPredicate(a)=1也應避免,因爲可分辨性和SQL Server中的標量UDF的一般性能。

+0

確實。 where子句中的UDF將傾向於強制執行表掃描...在性能方面非常糟糕的事情。 – 2013-03-24 21:47:20

+0

好的意見,謝謝! – Max 2013-03-24 22:18:42