工作中遇到了需要将年月拼接到一起的问题,如果数据正常是yyyy mm拼接只需要 || 拼接就可以了,但是目前的情况是,一月份的时候数据是1而不是01,如果直接 || 拼接 肯定会导致数据异常,想把数据处理成 yyyymm 的格式
于是想到了第一种方法 case when
判断月份长度=1,就在前面拼接一个0
年度||case when CHAR LENGTH(月份)=1 then '0'||月份 else 月份 end
结果也很好,也拼接出了想要的值,这时候,想到了另一个函数lpad
LPAD函数是在SQL语言中常用的字符串函数之一,它用于将一个字符串填充到指定长度,并在左侧添加指定的填充字符。LPAD的参数包括需要填充的字符串、需要填充到的长度以及填充字符。
LPAD(string-expression,length[,padstring])
string-expression - 字符串表达式,可以是列名、字符串文字、主机变量或另一个标量函数的结果。可以是可转换为 VARCHAR 数据类型的任何数据类型。字符串表达式不能是流。
length - 一个整数,指定返回的字符串中的字符数。
padstring - 可选 — 由一个字符或一串字符组成的字符串,用于填充输入字符串表达式。 padstring 字符或字符附加到 string-expression 的左侧,以提供创建长度字符的输出字符串所需的尽可能多的字符。 padstring 可以是字符串文字、列、主机变量或另一个标量函数的结果。如果省略,则默认为空格字符。
试一试
年度||lpad(月度,2,'0')
lpad拼接也实现了想要的效果。