固定字符串中字符串的长度

时间:2014-04-04 13:12:14

标签: sql database oracle

我正在建立这个字符串:

text_ := 'NAME           LNAME         AGE'||chr(13)||chr(10);

FOR person_ IN list LOOP

text_ := text_ ||person_.name||'     '||person_.lname||'      '||person_.age||chr(13)||chr(10);

END LOOP;

循环将导致:

NAME           LNAME            AGE
name           lname            18
namename            lname           18

期望的结果:

NAME           LNAME            AGE
name           lname            18
namename       lname            18

如果字符串中的值没有达到固定值,有没有办法告诉字符串用空格填充?

使用RPAD:

  text_ := text_||rpad('Name', 30)||rpad('Date', 12)||chr(13)||chr(10)||chr(13)||chr(10);

  FOR op_ IN get_op LOOP
    text_ := text_||rpad(op_.NAME, 30)||rpad(op_.DATE,12)||chr(13)||chr(10);
  END LOOP;

结果:

Name                          Date      

UserUserUser                    2014-04-03                                                   
UserUser                      2014-04-04
UserUser                      2014-04-03

1 个答案:

答案 0 :(得分:1)

使用rpad

text_ := text_ ||rpad(person_.name,40)||rpad(person_.lname,40)||rpad(person_.age,40)||chr(13)||chr(10);

测试用例

DECLARE
   t VARCHAR2(1000);
BEGIN
   t := RPAD('NAME',10)||RPAD('LNAME',10)||RPAD('AGE',10)||chr(13)||chr(10);
   FOR i IN 8..11
   LOOP
      t := t ||RPAD('Name'||i,10)||RPAD('lname'||i,10)||RPAD(i,10)||chr(13)||chr(10);
   END LOOP;
   dbms_output.put_line(t);
END;

输出:

NAME      LNAME     AGE       
Name8     lname8    8         
Name9     lname9    9         
Name10    lname10   10        
Name11    lname11   11