【问题标题】:converting employee_number into employee_range using case but system throwing error(Error converting data type varchar to bigint)使用 case 将employee_number 转换为employee_range 但系统抛出错误(将数据类型varchar 转换为bigint 时出错)
【发布时间】:2021-03-31 11:55:29
【问题描述】:

正在将 Employee_number 转换为员工箱,但系统抛出错误。

不确定是否与employee_number 中的空值有关;现有答案没有帮助

Employee_number(bigint - 数据类型,存在空值,0 - 7500000 范围)

查询:

select company_primary_id,
       case when employee_number is null then 'No data'
            when employee_number between 1 and 250 then '1-250' 
            when employee_number between 250 and 1000 then '250 - 1K' 
             else '1K+' end as employee_range
           from Company_table 

Expected Output: Company_primary_id | Employee_range
                  1234                 1-250
                  4532                 1K+

错误:将数据类型 varchar 转换为 bigint 时出错。

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。示例数据也会有所帮助。
  • 列employee_number数据类型?
  • 标记数据库; employee_number 数据类型是 bigint。它的值范围为 0 到 7500000 和空值;

标签: sql sql-server case varchar bigint


【解决方案1】:

评论太长了。

我想不出有任何数据库会在这个查询中产生该错误。为什么?唯一可能发生的转换是在when 子句中比较employee_numbercase 在所有路径中正确返回字符串——这将是此错误的“正常”原因。

如果employee_number 是一个字符串,我可以想象这个问题。但是比较值不会被视为bigint,因此不清楚该错误来自何处。

唯一的另一种可能性是company_table 确实是一个视图,而视图中完全出现了其他问题。

【讨论】:

  • 表不是视图。 employee_number 数据类型是 bigint,我不知道为什么当转换是其他方式时系统会抛出错误“Varchar 到 bigint 转换”
猜你喜欢
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多