我正在使用Oracle SQL Developer 4.0.0.13。
查询:
UPDATE employes
SET emptime = systimestamp
WHERE emp_id = 123
AND emp_device = :abc;
字段定义:emp_device char(20 byte)
值为:99998000000008880999(此值存在于表中)
当我在SQL开发人员中运行上述查询时,它要求我给出绑定变量的值,我将其粘贴到文本框中,并返回0行更新。
但是当我在更新查询中删除bind变量并指定实际值时,它会更新列值。以下是查询。
查询:
UPDATE employes
SET emptime = systimestamp
WHERE emp_id = 123
AND emp_device = 99998000000008880999 ;
---(作品)
此外,当我在绑定变量文本框中添加一些尾随空格并修剪emp_device列时,它会更新列。以下是查询。
查询:
UPDATE employes
SET emptime = systimestamp
WHERE emp_id = 123
AND emp_device = trim(:abc);
- (工作---:abc值为'99998000000008880999')
我不知道它有什么问题。有人可以看看并提出解决方案。
答案 0 :(得分:0)
您正在使用CHAR类型作为emp_device数据类型。请注意,CHAR类型始终为空白,将生成的字符串填充到固定宽度。read this。
如果您需要字符串或仅使用NUMBER,则应使用VARCHAR2作为数据类型,因为您的示例完全由数值组成。
答案 1 :(得分:-1)