Tsql where子句中T-SQL中的用例?
我试图使用case来改变我在where子句中检查的值,但我得到了错误: 关键字“CASE”附近的语法不正确 SQL Server 2005Tsql 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)
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+'%','%')
嗯