我所試圖做的是這樣的:分配變量
DECLARE @Test NVARCHAR(200)
SELECT et.ExampleField, (SELECT CASE (@Test = (SELECT 'Test')) WHEN @Test IS NOT NULL THEN @Test
ELSE
''
END) FROM ExampleTable et
爲了提高可讀性我已經簡化了一點,但基本上(SELECT 'Test')
位可以是任何SQL語句SELECT
拉返回一個值(或NULL
)供我測試。
可以這樣做嗎?我試圖這樣做的原因是我希望通過消除對嵌套選擇的需求(在此示例中爲(SELECT 'Test')
)而不必運行多次,即像這樣的工作:
DECLARE @Test NVARCHAR(200)
SELECT et.ExampleField, (SELECT CASE WHEN (SELECT 'Test') IS NOT NULL THEN (SELECT 'Test')
ELSE
''
END) FROM ExampleTable et
所以看起來我可能不需要擔心多次執行的查詢。然而,當你說這些事情是'正常'優化,你是否說有這種情況發生?如果是這樣,你能舉出任何例子嗎?還是會這麼複雜,我不太可能遇到這種情況?謝謝。 – Interminable