是否可以在T-SQL中定義自定義謂詞?這樣的情況下我可以寫:在T-SQL中創建自定義謂詞函數?
SELECT a,b,c
FROM MyTable
WHERE dbo.myCustomPredicate(a)
一個簡單的解決辦法是建立一個標量值函數dbo.myCustomPredicate返回了一下,改變WHERE子句
WHERE dbo.myCustomPredicate(a)=1
只是好奇,如果可以避免「= 1」。
是否可以在T-SQL中定義自定義謂詞?這樣的情況下我可以寫:在T-SQL中創建自定義謂詞函數?
SELECT a,b,c
FROM MyTable
WHERE dbo.myCustomPredicate(a)
一個簡單的解決辦法是建立一個標量值函數dbo.myCustomPredicate返回了一下,改變WHERE子句
WHERE dbo.myCustomPredicate(a)=1
只是好奇,如果可以避免「= 1」。
不,這是不可能的。
SQL Server不支持ANSI SQL布爾數據類型。
你不會說什麼dbo.myCustomPredicate
的實現,但很可能WHERE dbo.myCustomPredicate(a)=1
也應避免,因爲可分辨性和SQL Server中的標量UDF的一般性能。
確實。 where子句中的UDF將傾向於強制執行表掃描...在性能方面非常糟糕的事情。 – 2013-03-24 21:47:20
好的意見,謝謝! – Max 2013-03-24 22:18:42
不; SQL中沒有布爾數據類型。 – 2013-03-24 12:40:43
@PieterGeerkens - SQL:1999有一個布爾數據類型。 – 2013-03-24 15:27:38
@MartinSmith:更正:T-SQL沒有布爾數據類型。 – 2013-03-24 15:32:52