SELECT CAST(LAST_DAY(to_timestamp(lpad(cast(NUMBER_COLUMN as varchar2(6)), 6, '0'), 'MMYYYY')) AS TIMESTAMP) AS NUMBER_COLUMN_ALIAS FROM TAB1 T1
WHERE NOT EXISTS(SELECT TIMESTAMP_COLUMN FROM
(SELECT TIMESTAMP_COLUMN FROM TAB2)
WHERE TIMESTAMP_COLUMN=CAST(LAST_DAY(to_timestamp(lpad(cast(NUMBER_COLUMN as varchar2(6)), 6, '0'), 'MMYYYY')) AS TIMESTAMP));
我有兩個數據列 - 一個是NUMBER_COLUMN和一個是TIMESTAMP_COLUMN。我需要將NUMBER_COLUMN轉換爲TIMESTAMP_COLUMN格式並匹配它們的記錄。使用解碼輸入'不是有效的月'值,因爲它是
上面的查詢工作正常,但是我的NUMBER_COLUMN中有一些錯誤的數據值,它將返回錯誤'not a valid month'。 我的查詢只適用於數字值,如52002,41995,122016,它們將分別轉換爲5/31/2002,4/31/1995,12/31/2016等。
現在有這些'壞'數據值,如0,10000,131994,421996,731989等等。 我希望查詢返回錯誤的數據值,因此我不必將其轉換,否則使用CAST(LAST_DAY(to_timestamp(lpad(cast(NUMBER_COLUMN as varchar2(6)), 6, '0'), 'MMYYYY'))
轉換良好的數據值。
我可以手動列出解碼函數中的所有'壞'值,但有沒有更容易的方法來捕獲它們?
我正在用盡想法。 感謝
爲什麼不乾脆讓自己的功能,你嘗試轉換,如果失敗,陷阱「不是一個有效的月」異常並返回原來的價值? – Craig
@craig我需要將它們提取到遊標中並稍後使用批量加載。 – JohnD