SELECT *FROM mes_smart_card WHERE 1=1 AND id_code like (SELECT (CASE WHEN card_identification = 0 THEN SUBSTR(id_code, 3, LENGTH(id_code)) ELSE id_codeEND ) AS id_code FROM mes_smart_card WHERE 1=1 AND productid = 'pcb_m...
CASE
具有两种格式:
简单
CASE
函数将某个表达式与一组简单表达式进行比较以确定结果。
CASE
搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE 参数。
语法简单
CASE
函数: 代码如下:
CASE
input_expression WHEN when_expression THEN result_expression [ …n ] [ ELSE else_result_expression END
CASE
WHEN sex = ‘1’ THEN ‘男’
WHEN sex = ‘2’ THEN ‘女’
ELSE ‘其他’ END这两种方式,可以实现相同的功能。简单
Case
函数的写法相对比较简洁,但是和
Case
搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,C
CASE
case
_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END
CASE
说明:一个
CASE
语句
经常可以充当一个IF-THEN-ELSE
语句
。
case
_value是要被判断的值或表达式,接下来是一系列的WHEN-THEN块,每一块的when_value参数指定要与
case
_value比较的值,如果为真,就执行statement_list中的
SQL
语句
。如果前面的每一个块都不匹配就会执行ELSE块指定的
语句
。
CASE
语句
最后以END
CASE
结束。
case
语句
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_
case
when 是my
SQL
里面的控制流
语句
,和if…then…的分支判断逻辑很相似。
case
when
语句
有两种:
(1)简单
case
when
(2)
case
搜索函数法
简单
case
when只能处理等式问题,
case
搜索函数法可以处理等式问题也可以处理不等式问题。
case
when的语法逻辑
二、
case
when
语句
在业务中常见的几种用法
2.1 数据映射处理
比如将分类变量中每一个取值分别映射成0、1、2…5;所有用户的性别映射成0、1;或者把数值映射成具体的实际含义。
如果是映射性别(0为女
select id="getStudentListLikeName" parameterType="StudentEntity" resultMap="studentResultMap">
SELECT * from STUDEN
一、动态
SQL
概述
以前在使用JDBC操作数据时,如果
查询
条件
特别多,将
条件
串联成
SQL
字符串是一件痛苦的事情。通常的解决方法是写很多的if-else
条件
语句
对字符串进行拼接,并确保不能忘了空格或在字段的最后省略逗号。MyBatis使用动态
SQL
来改善这种情形,动态
SQL
是基于OGNL的表达式,可方便我们在
SQL
语句
中实现某些逻辑。用于实现动态
SQL
的元素如下。
if:利用if实现简单的
条件
选择
choose(when,otherwise):相当于Java中的switch
语句
,通常与when和otherwi
SQL
Server判断
语句
(IF ELSE/
CASE
WHEN )
执行顺序是 – 从上至下 – 从左至右 --,所当上一个
条件
满足时(无论下面
条件
是否满足),执行上个
条件
,当第一个
条件
不满足,第二个
条件
满足时,执行第个二
条件
1、IF ELSE
不能用在SELECT中,只能是块,比如:
BEGIN
…(代码块)
ELSE (注意这里没有ELSE IF,要实现只能在下面的块中用IF判断)
BEGIN
…(代码块)
declare @num int --定义变量
set @n
最近被好多琐事缠身,下个礼拜开始就要开始今年遥遥出差的日子了,各位测试小伙伴做过长期需要测试出差的项目吗。哎,话不多说,珍惜现在为数不多的自由时光吧。
最近呢,在帮公司面试招人,但是我发现有很多测试小伙伴
sql
能力好差,各个数据库我们不谈,就光说
sql
语句
而言个人还是感觉比较简单。今天就说一下
sql
中的
条件
语句
。
什么是
条件
语句
可能有部分小伙伴会发出疑问,
sql
还有
条件
语句
?下面直接看例子。其实概念很简单,但是如何举例子可真是愁死我了。哈哈。
下面看看具体写法吧。
case
when
条件
1 th
SQL
CASE
语句
的使用
CASE
是一个控制流
语句
,其作用与IF-THEN-ELSE
语句
非常相似,可根据数据
选择
值。
CASE
语句
遍历
条件
并在满足第一个
条件
时返回值。 因此,一旦
条件
成立,它将短路,从而忽略后面的子句并返回结果。 正如我们在今天的博客中看到的那样,它可以用来测试
条件
和离散值。
CASE
语句
有两种形式:
第一种评估一个或多个
条件
,并返回第一个符合
条件
的结果。 如果没有
条件
是符合的,则返回ELSE子句部分的结果,如果没有ELSE部分,则返回NULL:
WHEN condit
LambdaQueryWrapper.select方法是Mybatis-Plus中的一个方法,用于构建
SQL
查询
语句
的
SQL
片段(
SQL
fragment)。在使用该方法时,我们可以在其中使用
SQL
中的
Case
When
语句
,用于在
查询
的结果中进行
条件
判断。
Case
When是一种基本的
条件
语句
,用于在数据
查询
中进行
条件
判断。它的基本语法结构为:
Case
When [
条件
1] Then [结果1] When [
条件
2] Then [结果2] ... Else [结果N] End
在LambdaQueryWrapper.select方法中,我们可以通过链式调用LambdaQueryWrapper对象的when和then方法,来构建复杂的
Case
When
语句
。例如,我们可以这样来构建一个求学生总成绩和平均分的
SQL
语句
:
LambdaQueryWrapper<Student> wrapper = new LambdaQueryWrapper<>();
wrapper.select(
// 当Score1 > 90时,返回Score1 * 0.5,否则返回0
"SUM(
CASE
WHEN Score1 > 90 THEN Score1 * 0.5 ELSE 0 END) AS TotalScore",
// 当Score2 > 80时,返回Score2,否则返回0
"SUM(
CASE
WHEN Score2 > 80 THEN Score2 ELSE 0 END) / COUNT(Score2) AS AvgScore"
wrapper.eq(Student::getGrade, "大一");
上面的代码使用了LambdaQueryWrapper中的select方法来构建
SQL
语句
的select部分,同时通过两个
Case
When
语句
来计算学生的总成绩和平均分。在这两个
语句
中,我们使用了LambdaQueryWrapper中的when和then方法进行
条件
判断和结果处理。
总之,通过LambdaQueryWrapper.select方法,我们可以方便地构建复杂的
SQL
查询
语句
,包括使用
Case
When
语句
进行
条件
判断和结果处理。在实际的数据
查询
工作中,我们可以灵活地应用这些方法,以实现高效、准确的数据
查询
。