SQL45 对过长的昵称截取处理

明确题意:

  • 筛选出 nick_name 长度大于 10 的用户,把 nick_name 按照最长 10 个字符进行截断
  • 若长度超过 10 个字符,则在截断的 nick_name 后补上 "..."

问题拆解

  • 获取字符串长度。知识点:CHAR_LENTH
    • LENTH 获取字符串的字节数量,一个中文字符通常不止占用一个字节
    • CHAR_LENTH 获取字符数量,不管汉字、字母、数字都算一个字符
  • 筛选长度满足条件的用户。知识点:WHERE
  • 判断字符串长度是否超过阈值。知识点:分支结构
    • IF(cond, a, b)
    • CASE WHEN THEN [ELSE] END

代码实现:

SELECT
    uid,
    CASE
        WHEN CHAR_LENGTH(nick_name) > 13 THEN
            CONCAT(LEFT(nick_name, 10), '...')
        ELSE
            nick_name
    END AS nick_name
FROM
    user_info
WHERE
    CHAR_LENGTH(nick_name) > 10