Sql文的where中使用case when

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql文的where中使用case when相关的知识,希望对你有一定的参考价值。

有这样一段sql文。
select B.bCol_1,B.bCol_2,C.cCol_1
from TBL_B B left join TBL_C C
on B.bCol_Key = C.cCol_Key
where B.bCol_Time < 'xxxx'

现在需要扩展功能,就是只有当表B.bCol_Flag=0时,where的条件改为C.cCol_Time < 'xxxx',其他的情况保持不变。不知道where里面能不能再用case when或者还有其他的,如果能用的话,怎么个写法。
因为这个是扩展功能,而且这段代码是在Procedure中的,所以不太能用参数和if…else控制来写。
比较急,如果代码通过,我会加满分的。谢谢。

这样就可以了
select B.bCol_1,B.bCol_2,C.cCol_1
from TBL_B B left join TBL_C C
on B.bCol_Key = C.cCol_Key
where (B.bCol_Time < 'xxxx' and B.bCol_Flag<>0) or ( C.cCol_Time < 'xxxx' and B.bCol_Flag=0)
参考技术A declare @strsql varchar(8000)
set @strsql='select B.bCol_1,B.bCol_2,C.cCol_1
from TBL_B B left join TBL_C C
on B.bCol_Key = C.cCol_Key '
declare @bCol_Flag int
declare @xxxx varchar(8000)
set @xxxx='xxxx'
select @bCol_Flag=B.bCol_Flag from B
if(@bCol_Flag = 0)
begin
set @strsql = @strsql + 'where B.bCol_Time < '+ @xxxx
end
exec(@strsql)

case when用法sql

参考技术A

在SQL中,“Case When”语句用法如下:

在SQL中,“Case When”语句用于选择判断,在执行时先对条件进行判断,然后根据判断结果做出相应的操作;语法“CASE 字段 WHEN 条件1 THEN 操作1 WHEN 条件2 THEN 操作2...ELSE 操作n END;”。

SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。

SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。

SQL 是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL 作为其标准处理语言。

此外,SQL 也有一些变种,就像中文有很多方言,比如:

    微软的 SQL Server 使用 T-SQL;

    Oracle 使用 PL/SQL;

    微软 Access 版本的 SQL 被称为 JET SQL(本地格式)。

以上是关于Sql文的where中使用case when的主要内容,如果未能解决你的问题,请参考以下文章

sql中where后面用case的问题

SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错

灵活多变的SQL-Where后面的case when

SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错

case when 使用

Oracle SQL 不同的 where 子句与 case when