[英]Trouble executing a function in the where clause if condition is met
我正在按照以下幾行進行查詢:
SELECT 1
FROM Table1 as t1
INNER JOIN Table2 AS t2 ON t2.firstName = t1.firstName
WHERE
t2.firstName='John'
AND t1.age > 14
現在,我想運行一個用戶定義的函數對組織檢查身份證一定的標准,但只有當ID不為空。 我嘗試只是包括
organizationid = ''
AND dbo.validID(organizationid) = 1
但是由於SQL不使用短路評估,因此該函數仍然可以運行。 當它在大型數據集上運行時,這會減慢速度,我試圖避免這種情況。 我也嘗試過使用以下case
語句:
CASE
WHEN t1.organizationid != '' THEN (AND dbo.validID(organizationid) = 1)
END
但是SQL似乎不喜歡這樣,我得到了一個不正確的語法錯誤。
僅在滿足某些條件的情況下,我將如何運行此用戶定義的函數?
我肯定想念一些明顯的東西-您為什么不能這樣做?
SELECT 1
FROM Table1 as t1
INNER JOIN Table2 AS t2 ON t2.firstName = t1.firstName
WHERE
t1.organizationid != ''
AND dbo.validID(organizationid) = 1
AND t2.firstName='John'
AND t1.age > 14
更新:
我建議選擇在organizationid!=''處的所有記錄,並將這些結果放入臨時表中,然后使用針對該臨時表中值的validID調用執行查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.