簡體   English   中英

帶case語句的條件WHERE子句

[英]Conditional WHERE clause with case statement

我正在使用以下查詢,但卡住了

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語句應如下所示:

CASE
  WHEN Site.siteID IN ('1T','1Q') 
    THEN RTRIM(LTRIM(SUBSTRING(Customer.clientID ,1,6)))
  ELSE Customer.clientID
END = @clientID

您無需在CASE中進行比較,而可以使用CASE為您提供可以比較的價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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