【问题标题】:Sql Conversion failed when converting the varchar value转换varchar值时Sql转换失败
【发布时间】:2015-02-23 17:01:31
【问题描述】:

我在这里搜索过,但我仍然不确定我哪里出错了。

我正在尝试找出哪些电子邮件不会在 a_customer 表中重复出现 其中电子邮件在 dbo.Remail 查询将运行大约 20 分钟,然后将出现此错误消息。

将 varchar 值转换为数据类型 int 时转换失败。

  SET ANSI_WARNINGS OFF
  select email from dbo.Remail with (nolock)
  where email in (select cast(count(email) as int) from a_customer
  group by email
  having count(email) < 1 
  )

【问题讨论】:

  • 那个查询没有任何意义。您正在选择没有电子邮件的电子邮件计数并按该计数搜索Remail 表?
  • WHERE email IN (SELECT COUNT()....)?,这没有任何意义
  • 我假设您的电子邮件列不是整数?您的 where 谓词正在搜索其中 email 的值 = a_customer 的行数的行。我怀疑您不想计算,而是应该使用电子邮件。 fwiw,你知道 NOLOCK 提示带来的一切吗?从您的查询看起来可能没问题,但太多人不理解该提示的所有后果。 blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere

标签: sql error-handling varchar


【解决方案1】:

听起来emailvarchar,而您的子查询的返回类型是int。服务器尝试将外部email 转换为int 并失败。

您似乎想要选择所有还没有“remail”的电子邮件,但这不是您的查询所做的。完全没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2023-03-31
    • 2011-05-01
    相关资源
    最近更新 更多