【发布时间】:2018-07-08 10:19:31
【问题描述】:
在一列中,有以“0”开头的数字和字母数字值。 如果它是数字,如何修剪前导零,如果它是 Oracle 中的字母数字,则不应修剪零。
我需要在WHERE Condition中使用它。
例如
000012345 应该是 12345。 012321 应该是 12321。 00012JY12 应该是 00012JY12。
这是我尝试过的:
SELECT COUNT(*)
FROM <TABLE 1> ONN, <TABLE 2> SV
WHERE SV.CSA_SHP_VISIT_STG_SEQ_ID=ONN.CSA_SHOP_VIST_SEQ_ID
AND EXISTS (SELECT '1' FROM <TABLE 3> TMP
WHERE TRIM(SV.WORK_ORDER_NUM) = TRIM(TMP.WORK_ORDER_NUM)
AND PLANT IN ('EMA')
AND regexp_replace(TRIM(ONN.INSTLD_PART), '^0+([[:digit:]]+)$',
'\1')=TRIM(TMP.INSTLD_PART) AND
TRIM(ONN.INSTLD_PART_SERIAL_NUM)=TRIM(TMP.INSTLD_PART_SERIAL_NUM) AND
nvl(to_number(TRIM(ONN.INSTLD_PART_CSN)),0)=
nvl(to_number(TRIM(TMP.INSTLD_PART_CSN)),0)
and REGEXP_LIKE(tmp.INSTLD_PART_CSN, '^-?\d+(\.\d+)?$'))
【问题讨论】:
-
不确切知道您在做什么,但如果可能的话,这将是在演示级别(无论您使用什么应用程序或报告)更好地处理数据。
标签: sql oracle oracle11g leading-zero character-trimming