2017-09-01 29 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