我有一个字段是varchar,包含数字和日期作为字符串。我想更新此字段中大于720的所有数字。我首先尝试进行选择,但出现此错误:

Conversion failed when converting the nvarchar value '16:00' to data type int.

这是我的查询:
select id, case(isnumeric([other08])) when 1 then [other08] else 0 end
from CER where sourcecode like 'ANE%' --and other08 > 720

当我取消注释最后一部分时,它将失败。

我正在尝试使所有数字都大于720,但我无法做到这点。投射和转换时也会失败。

谢谢大家的帮助

最佳答案

您还需要在WHERE子句中执行检查和转换:

SELECT
       id,
       CASE WHEN isnumeric([other08]) = 1 THEN CAST([other08] AS INT) ELSE 0 END
FROM   CER
WHERE  sourcecode LIKE 'ANE%'
AND CASE WHEN isnumeric([other08]) = 1 THEN CAST([other08] AS INT) ELSE 0 END > 720

关于sql-server - 将nvarchar转换为int时转换失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4145526/

10-09 08:47