甲骨文开发人员。 ORA-01722: 使用 UNION 时数字无效
Oracle developer. ORA-01722 Invalid Number when using UNION
我有这个问题:
我有两个表:Table A 和 Table B,同一列名为 PK_COLUMN,在两个表中都是 numeric(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 Invalid number.
问题是,当我分别执行联合的两个部分时,它们工作得很好!
正如 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;
您将能够确定哪些 table 有问题记录。
如果您使用的是 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;
我有这个问题:
我有两个表:Table A 和 Table B,同一列名为 PK_COLUMN,在两个表中都是 numeric(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 Invalid number.
问题是,当我分别执行联合的两个部分时,它们工作得很好!
正如 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;
您将能够确定哪些 table 有问题记录。
如果您使用的是 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;