2017-09-01 27 views
2

我做了一些Google搜索並取得了一些進展,但我似乎無法得到正確的語法。我認爲它應該是這樣的:如果或然後在SQL Server

SELECT 
    IF(Substring(dbo.LIMIT_HIST.ID,8,5) = '.0010' OR 
    Substring(dbo.LIMIT_HIST.ID,8,5) = '.0020' 
    Left(dbo_LIMIT_HIST.ID,18),"")) AS IDs 
FROM 
    dbo.LIMIT_HIST INNER JOIN 
    dbo.CUSTOMER ON 
    dbo.LIMIT_HIST.LIABILITY_NUMBER = dbo.CUSTOMER.CUSTOMER_CODE 

有人可以給我一個正確的方向推? 謝謝!

+0

在SQL中做什麼的語法? – Amit

+0

嘿爲什麼在'.0020'和左後沒有「AND」或「OR」? – tanaydin

回答

4

看起來你想要一個案例陳述。

SELECT 
    CASE 
     WHEN Substring(dbo.LIMIT_HIST.ID,8,5) = '.0010' 
      OR Substring(dbo.LIMIT_HIST.ID,8,5) = '.0020' 
     THEN Left(dbo_LIMIT_HIST.ID,18) 
     ELSE '' 
    END AS IDs 
FROM 
    dbo.LIMIT_HIST INNER JOIN 
    dbo.CUSTOMER ON 
    dbo.LIMIT_HIST.LIABILITY_NUMBER = dbo.CUSTOMER.CUSTOMER_CODE 
+0

當谷歌搜索時,我看到了Case的一個例子......但是當我看到更多If ... Then例子。很混亂。但現在它是有道理的。 – ryguy72

+1

如果通常在select之外使用來控制代碼的邏輯流。在SQL 2012中引入了[IIF()](https://docs.microsoft.com/zh-cn/sql/t-sql/functions/logical-functions-iif-transact-sql),可以替代「CASE」這種情況下的陳述,因爲你只有一個'WHEN'。但是,我很高興你們都清理了! – scsimon