我用下面的查询工作,我被困条件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