ORA号码无效

时间:2014-05-22 14:55:17

标签: sql oracle

UPDATE DB
SET ID = 400
WHERE 'ID2' = 400;

我有两个问题: 第一:我真的不明白为什么号码需要''而ID不是。 (如果数字没有,我会收到错误)。 第二:为什么我收到“无效号码”错误消息?

我可以将'400'放入'',但结果为零。

ID属性为数字(3,0),ID2属性为varchar(3BYTE)。

此致

1 个答案:

答案 0 :(得分:2)

'ID2'不是列的名称,而是字符串文字。 SQL中使用单引号来包含字符串。由于您要将字符串文字与数字文字进行比较,因此服务器正在尝试将字符串转换为数字,从而导致无效数字错误。

(如果您希望对列名进行精确解释,可以将列名括在双引号中。如果有人在名称中创建了包含大小写混合大小写或保留字符的列,则通常会使用此名称。可能不是这里的情况。)

如果ID2列是VARCHAR,并且您想要查找其值等于字符串' 400'的行,那么我认为您的谓词应为WHERE ID2 = '400'。如果这给你一个错误,那是什么?