温馨提示×

Mybatis中case when如何配合其他函数

小樊
81
2024-10-13 15:13:33
栏目: 编程语言

在 MyBatis 中,你可以在 <select><update><insert> 语句中使用 <if> 标签结合 SQL 函数和 CASE WHEN 语句。以下是一个示例,展示了如何在查询中使用 CASE WHEN 配合其他函数:

<select id="selectUsers" resultType="User">
  SELECT
    id,
    name,
    age,
    CASE
      WHEN age >= 18 THEN '成年'
      ELSE '未成年'
    END AS age_group
  FROM
    users
</select>

在这个示例中,我们从 users 表中选择所有用户,并使用 CASE WHEN 语句根据年龄判断用户是否成年。结果集中的列 age_group 将包含成年或未成年的字符串。

如果你需要在查询中使用更复杂的逻辑,可以结合使用 <if> 标签和其他 SQL 函数。例如,假设你想根据年龄计算用户的平均收入,可以使用以下查询:

<select id="selectAverageIncomeByAge" resultType="map">
  SELECT
    AVG(CASE
      WHEN age >= 18 THEN income
      ELSE 0
    END) AS average_income
  FROM
    users
</select>

在这个示例中,我们使用 AVG() 函数和 CASE WHEN 语句计算年龄在 18 岁及以上的用户的平均收入。对于未成年用户,我们将 income 列的值视为 0。结果集中的列 average_income 将包含计算出的平均收入。

0