客户的标签由以下部分组成:
- 他的头衔(小姐/先生/夫人/女士),
- 他的名字,
- 他的姓。
它的最大大小必须是 20 个字符:
- 如果标签大小 > 20,则名字将缩减为带有点的首字母(Nancy 变为 N.),
- 如果标签大小仍然 > 20,则整个标签被截断为 20 个字符。
我已经这样做了:
SELECT
UPPER(
CASE WHEN
LENGTH(CONCAT(clientTitle, " ", clientFirstname, " ", clientSurname)) > 20
THEN
CONCAT(clientTitle, " ", CONCAT(SUBSTR(clientFirstname, 1, 1), "."), " ", clientSurname)
ELSE
CONCAT(clientTitle, " ", clientFirstname, " ", clientSurname)
END
) AS label
FROM Client
它有效,但对我来说看起来不太好。连接语句写了 3 次,在任何情况下都做了 2 次。你知道我怎样才能让这个查询更好、更高效吗?