我正在使用以下查询,而且我遇到了
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语句开头并不是一个好主意,但我觉得我离这里很近。我知道在进行此调用之前我可以对站点表进行完全独立的调用,但我真的想在一个语句中得到它,希望这是可能的。
答案 0 :(得分:3)
案例陈述应如下所示:
CASE
WHEN Site.siteID IN ('1T','1Q')
THEN RTRIM(LTRIM(SUBSTRING(Customer.clientID ,1,6)))
ELSE Customer.clientID
END = @clientID
你没有在CASE中做comparisson,而是使用CASE来获得你可以比较的值。