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控制台),然后将粘贴输出复制到编辑器中。