我有一个查询,我需要找到一个refnum的值,其数量类似于“00627987800001”,所以当我编写查询时,我面临两个问题。
1.我需要包括初始零的全部数字。
2.另一个值得关注的是我需要使用数字作为 - 分隔如0062-7987-800-001
我的查询如下。
SELECT nvl(to_char((SELECT lr.location_refnum_value
FROM location_refnum lr,
servprov sr,
location loc,
shipment sh
WHERE sh.servprov_gid = sr.servprov_gid
AND sr.servprov_gid = loc.location_gid
AND loc.location_gid = lr.location_gid
AND lr.location_refnum_qual_gid = 'ULA.UL_CPF'
AND sh.shipment_gid = :p_shipment_id),
'999999999999'),
'-')
FROM dual
答案 0 :(得分:0)
select regexp_replace (to_char (627987800001,'FM00000000000000'),'(.{4})(.{4})(.{3})(.{3})','\1-\2-\3-\4')
from dual
;
......并且无论如何,请使用ANSI / ISO JOIN
select regexp_replace
(
to_char (lr.location_refnum_value,'FM00000000000000')
,'(.{4})(.{4})(.{3})(.{3})'
,'\1-\2-\3-\4'
)
from location_refnum lr
join location loc
on loc.location_gid =
lr.location_gid
join servprov sr
on sr.servprov_gid =
loc.location_gid
join shipment sh
on sh.servprov_gid =
sr.servprov_gid
where lr.location_refnum_qual_gid = 'ULA.UL_CPF'
and sh.shipment_gid = :p_shipment_id
;
答案 1 :(得分:0)
您可以使用To_number函数将字符串转换为相应的“数字”值,以便在where
条件下进一步比较。
您可以使用instr
和substr
函数的组合在所给出的数字之间追加所需的字符“ - ”。
修改强>