【发布时间】:2024-05-18 16:05:02
【问题描述】:
我必须在数据库中将列的数据类型从 CHAR 更改为 INTEGER。我使用了以下查询:
ALTER TABLE cert_request
ALTER column CERT_REQUEST_NBR SET TYPE(INTEGER);
但是,它在关键字“column”中显示错误,并在执行时将错误代码显示为 -104。以下是错误日志;
Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=ALTER TABLE CERT_REQUEST ALTER CERT_R;BEGIN-OF-STATEMENT;<create_proc>, DRIVER=3.50.152
SQLState: 42601
ErrorCode: -104
我也尝试过使用 Modify 关键字,但在我的数据库中没有发现它。
我也尝试了以下查询,但再次没有用。
alter table CERT_REQUEST alter column cert_request_nbr integer
它给出了以下错误
Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=integer;umn cert_request_nbr;<alter_col_action1>, DRIVER=3.50.152
SQLState: 42601
ErrorCode: -104
请给我一些建议。
【问题讨论】:
-
在您更改之前,您的列类型是什么?
-
使用类型转换CAST(CERT_REQUEST_NBR AS UNSIGNED)
-
SELECT CAST(column AS INTEGER) FROM cert_request检查是否有无法转换为INT的数据 -
@Viandry 我已经在帖子中提到过,我必须从“CHAR”更改为 INTEGER
-
@pkn1230 您可能拥有无法转换为 INT 的
'aaa'之类的数据。首先将它们更新为 NULL,然后使用简单的ALTER TABLE。