Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 字符串中字符串的固定长度_Sql_Database_Oracle - Fatal编程技术网

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

Sql 字符串中字符串的固定长度,sql,database,oracle,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 A

我正在构建这个字符串:

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
使用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 

不起作用,所有内容仍然向左移动。您是否使用单空格字体显示结果?实际上您是对的复制/粘贴它在记事本中提供了正确的布局。我正在将我的文本发送到一个邮件功能中,该功能将文本发送到我的邮件中。某个地方出现了错误。这就是“结果:”中的确切输出吗。你复制粘贴了吗?日期的第一行有两个额外的空格,而名称又多了4个字符。不,这不是一个精确的复制粘贴。但它看起来是这样的。正如在下面的回答中所评论的,我认为它看起来是这样的,因为你们使用的是比例字体。打开编辑器(记事本),选择单空间字体(Lucida控制台),然后将粘贴输出复制到编辑器中。