select lpad('hello',8,'xy') from dual; -- ‘xyxhello’ 一共8位,从左边补齐
select rpad('hello',8,'xy') from dual; --‘ helloxyx ’一共8位,从右边补齐
select lpad('这是一朵花',20,'xy') from dual; --'xyxyxyxyxy这是一朵花'
select rpad('这是一朵花',20,'xy') from dual; --‘这是一朵花'xyxyxyxyxy’
即如果n小于字符串的个数(一个汉字等于两个普通字符串),则会取自左到右n个字符。
如果大于,则在字符串左边按顺序循环从‘xy’取值,返回字符串的个数是n。
select lpad('hello',4,'xy') from dual; --'hell'
select rpad('hello',4,'xy') from dual; --'hell'
即如果n小于字符串的值,则两个函数返回值是一样的。
语法是这样,LPAD(str,n[,str2]) LPAD(str,n[,str2])
当n<str.length,且没有str2参数的时候LPAD()和RPAD()都会截掉多余的字符。
并且都是从左向右取前n个字符。例如:
SELECT LPAD('CONGRANTULATIONS',5) FROM DUAL;
SELECT RPAD('CONGRANTULATIONS',5) FROM DUAL;
都会返回同一个字符串'CONGR'。
如果有str2且n<str.length时候和上面结果一样。
如果有str2且n>str.length的时候,
SELECT LPAD('CONGRANTULATIONS',20,'*') FROM DUAL; 结果为'****CONGRANTULATIONS'
SELECT RPAD('CONGRANTULATIONS',20,'*') FROM DUAL; 结果为'CONGRANTULATIONS****'