在where子句的T-SQL中使用CASE?

fat*_*oez 13 t-sql case where-clause

我试图用case来改变我在where子句中检查的值,但是我得到了错误:

关键字'CASE'附近的语法不正确

SQL Server 2005

select * 
from   table
where  ((CASE when adsl_order_id like '95037%'
         then select '000000'+substring(adsl_order_id,6,6)
         ELSE select adsl_order_id
       END)
       not in (select mwebID from tmp_csv_dawis_bruger0105)
Run Code Online (Sandbox Code Playgroud)

Ran*_*der 33

以下是在Where子句中包含case语句的一种方法:

SELECT * FROM sometable
WHERE 1 = CASE WHEN somecondition THEN 1 
    WHEN someothercondition THEN 2
    ELSE ... END
Run Code Online (Sandbox Code Playgroud)


Joe*_*oey 6

你可以尝试

SELECT *
FROM table
WHERE (SELECT CASE WHEN adsl_order_id LIKE '95037%'
              THEN '000000' + SUBSTRING(adsl_order_id, 6, 6)
              ELSE adsl_order_id
              END)
      NOT IN (select mwebID from tmp_csv_dawis_bruger0105)
Run Code Online (Sandbox Code Playgroud)