查询中具有固定字符数的PL/SQL列掩码

查询中具有固定字符数的PL/SQL列掩码,sql,oracle,plsql,mask,Sql,Oracle,Plsql,Mask,我想编写一个查询,使其输出为格式良好的文本。它的每一列都是特定数量的字符宽,如果查询返回的列的值小于列的字符数,则如果列表示数字,则通知其余字符为“0”;如果列表示字符串,则通知其余字符为“0”。可能吗 谢谢 蒂亚戈好吧,专家们已经警告过你不要这样做,但这是: select case when REGEXP_replace (DUMP (varchar2_column), '^Typ=(\d+).*', '\1') = 1 then lpad(varchar2_column, 10, ' '

我想编写一个查询,使其输出为格式良好的文本。它的每一列都是特定数量的字符宽,如果查询返回的列的值小于列的字符数,则如果列表示数字,则通知其余字符为“0”;如果列表示字符串,则通知其余字符为“0”。可能吗

谢谢


蒂亚戈

好吧,专家们已经警告过你不要这样做,但这是:

select   case when REGEXP_replace (DUMP (varchar2_column), '^Typ=(\d+).*', '\1') = 1 then lpad(varchar2_column, 10, ' ')
          else null end varchar2_column,
         case when REGEXP_replace (DUMP (number_column), '^Typ=(\d+).*', '\1') = 2 then lpad(number_column, 10, 0)
          else null end number_column
  from   table
数据类型(从转储):

oracle正则表达式:


我会发布转储功能的链接,但我的名声是,嗯。。。你可以用谷歌搜索它。

专家已经警告过你不要使用它,但这里是:

select   case when REGEXP_replace (DUMP (varchar2_column), '^Typ=(\d+).*', '\1') = 1 then lpad(varchar2_column, 10, ' ')
          else null end varchar2_column,
         case when REGEXP_replace (DUMP (number_column), '^Typ=(\d+).*', '\1') = 2 then lpad(number_column, 10, 0)
          else null end number_column
  from   table
数据类型(从转储):

oracle正则表达式:


我会发布转储功能的链接,但我的名声是,嗯。。。你可以用谷歌搜索它。

就我个人而言,我会在表示层处理这样的显示/格式问题,而不是在数据库中。@JoeStefanelli-同意。试图格式化数据库中的内容是各种罪恶的根源。这种方式存在着疯狂,比如多值列。听起来像老式的报告格式。输出分隔文件(csv)并在Excel中打开如何?只是一个想法。管理层喜欢他们的Excel;-)就我个人而言,我会在表示层而不是数据库中处理这样的显示/格式问题。@JoeStefanelli-同意。试图格式化数据库中的内容是各种罪恶的根源。这种方式存在着疯狂,比如多值列。听起来像老式的报告格式。输出分隔文件(csv)并在Excel中打开如何?只是一个想法。管理层喜欢他们的Excel;-)