预期得到 CLOB 数据类型
Expected-Got CLOB datatype
我陷入了一个问题,我不知道该怎么做。在我的 table 中,我有列类型 CLOB,在我的 SELECT
中,我使用了此列,但我无法从 select 语句中删除。
我尝试以某种方式将其更改为 VARCHAR(255),但我的 table 包含数据和备份 table 并且再次恢复需要时间。到目前为止,这是我的 SELECT 查询:
SELECT * FROM
(SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND TYPE = 1
UNION
SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND TYPE = 0
AND a.BecomeExternalAtaFromInternal = 1) a
这给出了错误:
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got clob
关于如何消除此类错误的任何建议和评论。
您收到此错误是因为 UNION 子句。 UNION 实现了不同的排序操作,我们不能在 CLOB 上执行这些操作。
最简单的选择是更改为 UNION ALL。这在理论上可能会在最终结果集中引入重复项,尽管考虑到每个子查询的 WHERE 标准,这似乎不太可能。
或者看起来您可以完全取消 UNION,通过 re-writing 您的查询如下:
SELECT * FROM
(SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND (TYPE = 1
OR (TYPE = 0
AND a.BecomeExternalAtaFromInternal = 1)
)
)a
这种方法可能更有效。
我陷入了一个问题,我不知道该怎么做。在我的 table 中,我有列类型 CLOB,在我的 SELECT
中,我使用了此列,但我无法从 select 语句中删除。
我尝试以某种方式将其更改为 VARCHAR(255),但我的 table 包含数据和备份 table 并且再次恢复需要时间。到目前为止,这是我的 SELECT 查询:
SELECT * FROM
(SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND TYPE = 1
UNION
SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND TYPE = 0
AND a.BecomeExternalAtaFromInternal = 1) a
这给出了错误:
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got clob
关于如何消除此类错误的任何建议和评论。
您收到此错误是因为 UNION 子句。 UNION 实现了不同的排序操作,我们不能在 CLOB 上执行这些操作。
最简单的选择是更改为 UNION ALL。这在理论上可能会在最终结果集中引入重复项,尽管考虑到每个子查询的 WHERE 标准,这似乎不太可能。
或者看起来您可以完全取消 UNION,通过 re-writing 您的查询如下:
SELECT * FROM
(SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND (TYPE = 1
OR (TYPE = 0
AND a.BecomeExternalAtaFromInternal = 1)
)
)a
这种方法可能更有效。