Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql where子句中T-SQL中的用例?_Tsql_Case_Where Clause - Fatal编程技术网

Tsql where子句中T-SQL中的用例?

Tsql where子句中T-SQL中的用例?,tsql,case,where-clause,Tsql,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)

我试图使用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)
你可以试试

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)

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

SELECT * FROM sometable
WHERE 1 = CASE WHEN somecondition THEN 1 
    WHEN someothercondition THEN 2
    ELSE ... END

关联子查询是一种可能性:

select * 
from mytable
where not exists (
    select * 
    from 
        tmp_csv_dawis_bruger0105
    where 
        mwebID = 
        CASE when mytable.adsl_order_id like '95037%' then '000000' + substring(mytable.adsl_order_id,6,6)
        ELSE mytable.adsl_order_id END
 )

大小写表达式前面的左括号太多。

将其放在SELECT子句中

select *, (CASE when adsl_order_id like '95037%'
         then '000000'+substring(adsl_order_id,6,6)
         ELSE adsl_order_id
       END) AS Id
from   table
where  not in (select mwebID from tmp_csv_dawis_bruger0105)

此外,您不需要“选择”案例的结果。

我来问这个问题是想找到一个答案,思考案例。。。这将是解决办法。我无法调整问题的答案,但这种使用空参数、部分参数或特定参数的技术有效:

CREATE PROC myproc  @vJobID VARCHAR (11) 
AS
SELECT * FROM Jobs 

WHERE Jobs.JobID like coalesce(@vJobID+'%','%')