我有這個問題:
我有兩個表:表 A 和表 B,具有名為 PK_COLUMN 的同一列,在兩個表中都是數字(8、0)。
我想建立這個聯盟:
Select
CAST(TRIM(TABLEA.PK_COLUMN) AS INT)
FROM TABLE A
UNION
Select
CAST(TRIM(TABLEB.PK_COLUMN) AS INT)
FROM TABLE B
我得到了下一個錯誤代碼:
ORA-01722無效的號碼。
問題是當我分別執行聯合的兩個部分時,它們可以完美地作業!
uj5u.com熱心網友回復:
正如 Dominik Klug 所說,pk_column 中的值之一不能轉換為 INT。單獨運行查詢時不會出現錯誤,因為您沒有掃描所有行,而只是掃描首先回傳的行的一個子集。如果您運行類似的查詢
Select DISTINCT CAST(TRIM(TABLEA.PK_COLUMN) AS INT)
FROM TABLEA;
Select DISTINCT CAST(TRIM(TABLEA.PK_COLUMN) AS INT)
FROM TABLEB;
您將能夠確定哪個表有問題的記錄。
如果您使用的是 Oracle 12.2 或更高版本,則可以使用VALIDATE_CONVERSION函式來識別哪些值無法通過如下查詢轉換為 INT。
Select *
FROM TABLEA
WHERE VALIDATE_CONVERSION(TABLEA.PK_COLUMN as NUMBER) = 0;
Select *
FROM TABLEB
WHERE VALIDATE_CONVERSION(TABLEB.PK_COLUMN as NUMBER) = 0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417576.html
標籤:
