业务场景: 当前有一个业务问题表,表中有很多字段,比如问题描述,发生时间,提交人等等,其中有个字段 提交人,展示的内容是提交人的id,而不是展示真实的提交人信息,而存放用户信息在另一张user表中,可以通过uuid 找到user_name真实的用户信息。
特殊点: 实际上这个问题单中的提交人,有些都是用户正常信息记录着的,比如zhangsan,lisi等等,但是有些数据却是uuidxxxx,格式的需要进行转换
所以这里我们需要用case when 来判断需要转换的字段
select
businessKey,
issureNo,
(case when left(applyUser,4)='uuid' then (select USER_NAME from schema.user_f where UID = applyUser) else applyUser end) AS applyUser
from table
case when .....(补充条件,这里由于需要转换的提交人内容是uuid开头的字符串,所以去用left函数匹配前四位是uuid的一条记录)
then ....(符合前面的补充条件后,那么这里就是赋的值,通过user表查user_name 匹配表中的UID=其字段值,从而找到对应的用户信息名称赋值)
else ....(没有匹配到 那么就给一个值,这里仍是放原先的字段值不变,表示没有匹配到这个uuidxxx,所以原封不动,没有转换)
end 做结尾符号