sql - 预期获得的 CLOB 数据类型
问题描述
我陷入了一个问题,我不知道该怎么办。在我的表中,我的列类型为 CLOB,而在我的表中,SELECT
我使用此列,并且无法从 select 语句中删除。
不知何故,我尝试将其更改为 VARCHAR(255) 但我的表包含数据和备份表,并且再次恢复将花费我时间。到目前为止,这是我的 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
这给出了错误:
第 1 行的错误:
ORA-00932:不一致的数据类型:预期 - 得到 clob
任何建议和评论如何消除此类错误。
解决方案
由于 UNION 子句,您会收到此错误。UNION 实现了不同的排序操作,而我们不能在 CLOB 上执行这些操作。
最简单的选择是更改为 UNION ALL。从理论上讲,这可能会将重复项引入最终结果集中,尽管考虑到每个子查询的 WHERE 标准,这似乎不太可能。
或者,您可以通过像这样重写查询来完全取消 UNION:
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
这种方法可能更有效。
推荐阅读
- javascript - 我试图将数组作为参数传递给 httpservice 调用,但参数正在评估为空数组
- flutter - Flutter 下拉菜单在与 API 一起使用时会导致 Future 出错
- inheritance - 如何让一个模型的字段值自动出现在odoo-13中的另一个模型的字段上?
- python - 如何使用熊猫执行等效的索引/匹配excel函数?
- python-3.x - AWS Elastic Inference with Pytorch-EIA 1.3.1 结果分段错误
- windows-10 - postgresql pgadmin 永远保持加载
- javascript - 使用 MaterialUI Grid 指定 ::after 样式
- postgresql - 如何让 postgres 监听容器的新暴露端口(不是 5432)?
- excel - 如何替换没有样式的 Excel 工作表单元格的样式,然后为单元格添加值?
- php - Alpine 3.8 Docker 映像:在 libmongoc 上启用 SSL