查询中具有固定字符数的PL/SQL列掩码
我想编写一个查询,使其输出为格式良好的文本。它的每一列都是特定数量的字符宽,如果查询返回的列的值小于列的字符数,则如果列表示数字,则通知其余字符为“0”;如果列表示字符串,则通知其余字符为“0”。可能吗 谢谢查询中具有固定字符数的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, ' '
蒂亚戈好吧,专家们已经警告过你不要这样做,但这是:
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;-)