我用下面的查詢工作,我被困條件WHERE子句與case語句
SELECT
@siteID = Site.siteID,
@customerID = Customer.customerID
FROM
Customer
inner join Site on Customer.siteID = Site.siteID
WHERE
Site.phoneNumber = @vaultID
and Customer.clientID = @clientID
一些Customer.clientID領域正在從四個字符字段更新爲八個字符的領域,前:'1234'變成'1234 01'。客戶將始終輸入四個字符的ID。根據他們記錄的siteID,我需要修改查詢,以便它只讀取ID的前四個字符。所以我一直在嘗試在where子句中加入這個:
AND
CASE
WHEN Site.siteID IN ('1T','1Q')
THEN RTRIM(LTRIM(SUBSTRING(Customer.clientID ,1,6)))= @clientID
ELSE
Customer.clientID = @clientID
END
但我沒有太多的運氣。到目前爲止,我所做的研究讓我相信在where子句中的case語句並不是一個好主意,但我覺得我在這裏很接近。我知道在進行這個調用之前我可以完全獨立的調用網站表格,但我真的想在一個聲明中得到這個,希望這是可能的。
爲什麼不使用動態SQL .... – logixologist
動態SQL在這裏是被禁止的恐怕。這是我寧願去的方式。 – TrevorGoodchild