zoukankan      html  css  js  c++  java
  • Oracle 给字符串补空格、补0

    利用lpad()、RPAD()函数来实现给字符串补空格或补0的功能:

    一、lpad()
    lpad函数将左边的字符串填充一些特定的字符其语法格式如下:lpad(string,n,[pad_string])
    string:字符或者参数
    n:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
    pad_string:可选参数,这个字符串是要粘贴到string的左边,若这个参数未写,lpad函数将会在string的左边粘贴空格。

    二、Rpad()
    rpad函数将右边的字符串填充一些特定的字符其语法格式如下:rpad(string,n,[pad_string])
    string:字符或者参数
    n:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
    pad_string:可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。

    具体代码示例:

    补空格:

     1 --Function
     2 create or replace function get_FillSpaces
     3 (
     4   P_String IN VARCHAR2,--传入的字串
     5   P_LR IN VARCHAR2,--L为左、R为右
     6   P_Length IN int--总长度
     7 ) return varchar2 is
     8   v_Temp varchar2(1000):='';
     9 begin
    10   if lengthb(P_String)>=P_Length then
    11     v_Temp:=P_String;
    12   else
    13     if P_LR='L' then--左补
    14       v_Temp:=lpad(P_String,P_Length+(lengthb(P_String)-length(P_String)));
    15     else
    16       v_Temp:=RPAD(P_String,P_Length+(lengthb(P_String)-length(P_String)));
    17     end if;
    18   end if;
    19     
    20   return(v_Temp);
    21   
    22 end get_FillSpaces;
    23 
    24 --Test
    25 select get_FillSpaces('asdf中国','L',20) from dual;--返回结果:'              asdf中国'
    26 select get_FillSpaces('asdf中国','R',20) from dual;--返回结果:'asdf中国              '

    补0:

     1 --Function
     2 create or replace function get_FillZero
     3 (
     4   P_String IN VARCHAR2,--传入的字串
     5   P_LR IN VARCHAR2,--L为左、R为右 
     6   P_Length IN int--总长度
     7 ) return varchar2 is
     8   v_Temp varchar2(1000):='';
     9   v_Name varchar2(1000):='';
    10 begin
    11   --去除小数点
    12   if P_String is not null then
    13     v_Name:=replace(P_String,'.','');
    14   end if;
    15   
    16   if length(v_Name)>=P_Length then
    17     v_Temp:=v_Name;
    18   else
    19     if P_LR='L' then--左补零
    20       v_Temp:=replace(lpad(v_Name,P_Length+(lengthb(P_String)-length(P_String))),' ','0');
    21     else
    22       v_Temp:=replace(RPAD(v_Name,P_Length+(lengthb(P_String)-length(P_String))),' ','0');
    23     end if;
    24   end if;
    25     
    26   return(v_Temp);
    27   
    28 end get_FillZero;
    29 
    30 
    31 --Test
    32 select get_FillZero('asdf中国','L',20) from dual;--返回结果:'00000000000000asdf中国'
    33 select get_FillZero('asdf中国','R',20) from dual;--返回结果:'asdf中国00000000000000'
  • 相关阅读:
    又到了什么都不想做的时候了/梦
    【笔记】【汇编语言】第11章 标志寄存器
    【经验】【ORACLE】CMD命令行下使用SQLPLUS执行SQL脚本后返回CMD命令行的方法
    【笔记】【汇编语言】第6章 包含多个段的程序
    【笔记】【汇编语言】第8章 数据处理的两个基本问题
    【笔记】【汇编语言】第5章 [BX]和loop指令
    【经验】【ORACLE】从字符串中截取其中的数字
    【读书】【沉思录】卷一
    【笔记】【汇编语言】第9章 转移指令的原理
    【笔记】【汇编语言】第10章 CALL和RET指令
  • 原文地址:https://www.cnblogs.com/AnneHan/p/4749677.html
Copyright © 2011-2022 走看看