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