将nvarchar值转换为smallint时转换失败(但没有nvarchar!)

时间:2017-10-02 15:49:03

标签: sql

可能是一个愚蠢的问题。

当我运行查询时

DELETE FROM "ITEM"
WHERE "COUNIDAD" = '130' AND "COINGRES" = 1 AND "ITEM" = '0002' AND "COCAJA" = '001'

它返回错误

Conversion failed when converting the nvarchar value '130|' to data type smallint.

但是没有' 130 |'在你的查询中,你可以看到。

发生了什么事?

编辑:     COUNIDAD nvarchar(3), COINGRES smallint, ITEM nvarchar (5), COCAJA nvarchar(3)

以防万一

编辑2:

自查询以来特别奇怪:

SELECT * FROM "ITEM" 
WHERE "COUNIDAD" = '130' AND "COINGRES" = 1 AND "ITEM" = '0002' AND "COCAJA" = '001'

返回我要删除的行

编辑3:

更新无效:/

2 个答案:

答案 0 :(得分:1)

正如@Jason Whitish所说,数据库中已经创建了2个触发器(我不知道没有仇恨:S)。 我删除了它们并且过程有效。

谢谢你们!

答案 1 :(得分:0)

根据您的查询逻辑,只有在COINGRES真的是字符串时才会出现这种情况。您可以通过比较为字符串来解决问题:

DELETE FROM "ITEM"
WHERE "COUNIDAD" = '130' AND "COINGRES" = '1' AND "ITEM" = '0002' AND "COCAJA" = '001';
相关问题