簡體   English   中英

如果滿足條件,則無法在where子句中執行功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM