返回可在SQL(oracle)中使用的数据类型的函数

返回可在SQL(oracle)中使用的数据类型的函数,sql,oracle,plsql,Sql,Oracle,Plsql,例如,我使用的是oracle sql: SELECT rpad(salary, 10 , '*') from employees; 在“10”部分,我希望可以使用函数直接返回数据类型的字节。 我试过了 结果很可怕 有没有办法,或者我必须在plsql中创建一个函数?您可以使用以下命令在整个表的列中填充最大长度的数据: select rpad( salary, max(length(salary)) over (partition by (select null from du

例如,我使用的是oracle sql:

SELECT rpad(salary, 10 , '*')
from employees;
在“10”部分,我希望可以使用函数直接返回数据类型的字节。 我试过了

结果很可怕


有没有办法,或者我必须在plsql中创建一个函数?

您可以使用以下命令在整个表的列中填充最大长度的数据:

  select rpad( salary,  
      max(length(salary)) over (partition by (select null from dual)), 
       '*') 
   from  employees
或使用“用户”选项卡中的“列”表中的“数据长度”设置为最大可能大小

select rpad( salary,  
     (select data_length from user_tab_columns 
        where table_name = 'EMPLOYEES' and 
        column_name = 'SALARY' ), 
     '*') from  employees

你想达到什么目标?你说的“返回数据类型的字节”是什么意思?嗨,不是,这不是我想要的结果。例如,我使用“描述员工”,所有的姓名和类型都会显示出来。工资类型为数字(8,2)。我不想使用“descripe”来搜索类型,我想使用一种直接返回rpad语句中的(8,2)的方法。员工ID号(6)名字VARCHAR2(20)姓氏不为NULL VARCHAR2(25)电子邮件不为NULL VARCHAR2(25)电话号码VARCHAR2(20)在上述情况下,电话号码字节大小为20,电子邮件字节大小为25。。很抱歉,我的解释不好。我可以想象这样的函数适用于简单类型,如NUMBER或VARCHAR2,但对于FLOAT、DOUBLE、CLOB、BLOB、DATE、TIMESTAMP等没有任何“默认”格式和长度的类型,您希望得到什么?嘿,dcieslak,谢谢您的回复。第一个不是我想要的结果,但是第二个是我想要的结果!!谢谢大家!@我能帮上忙真是太好了。如果可以的话,你可以把我的帖子标记为答案来结束这个问题。
select rpad( salary,  
     (select data_length from user_tab_columns 
        where table_name = 'EMPLOYEES' and 
        column_name = 'SALARY' ), 
     '*') from  employees