我怎样才能格式的数字为XXX-XX-XXXX?(How can I format a number

2019-07-29 06:14发布

我从一个存储过程查询社会安全号码的数据,我想格式化为我的存储过程中的社会安全号码。

如何设置格式XXXXXXXXX像甲骨文XXX-XX-XXXX?

Answer 1:

SSN与TO_CHAR格式化

SELECT TO_CHAR(012345678, '000g00g0000','nls_numeric_characters=.-') ssn from dual;

SSN
-----------
012-34-5678  

更新:感谢加里您指出的是,“0”格式字符应使用,而不是“9”保留前导零。



Answer 2:

你也可以使用毗连运算符|| ,这可能是更具可读性。

 SUBSTR(data, 1, 3) ||'-'||SUBSTR(data, 4, 2)||'-'||SUBSTR(data, 6, 4)


Answer 3:

如果你想检查号由9位应用格式之前,则正则表达式可以帮助:

SQL> create table t (nr)
  2  as
  3  select 123456789 from dual union all
  4  select 987654321 from dual union all
  5  select null from dual union all
  6  select 1234567 from dual union all
  7  select 12345678901234 from dual
  8  /

Tabel is aangemaakt.

SQL> select nr
  2       , regexp_replace(nr,'(^[[:digit:]]{3})([[:digit:]]{2})([[:digit:]]{4}$)','\1-\2-\3') formatted_nr
  3    from t
  4  /

                                    NR FORMATTED_NR
-------------------------------------- --------------------
                             123456789 123-45-6789
                             987654321 987-65-4321

                               1234567 1234567
                        12345678901234 12345678901234

5 rijen zijn geselecteerd.

关心,罗布。



Answer 4:

CONCAT(CONCAT(CONCAT(CONCAT(SUBSTR(sspdata, 1, 3), '-'), SUBSTR(sspdata, 4, 2)), '-',) SUBSTR(sspdata, 6, 4))


文章来源: How can I format a number as xxx-xx-xxxx?