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

时间:2016-05-24 15:43:45

标签: sql sql-server sql-server-2008 tsql ssms

对具有smallint列的表运行select语句并收到以上错误:

SELECT * FROM [Database].[dbo].[TableName]
where ColumnName = 'ABC123'

我知道smallint需要是一个整数,但在表中,数据包含混合数据(即ABC123);如何在不修改数据类型的情况下运行select语句?当我尝试修改数据类型时,SQL告诉我我需要删除并重新创建我不能做的表...

谢谢!

2 个答案:

答案 0 :(得分:3)

使用Cast我能得到结果:

select * from TableName
where cast(ColumnName as varchar) = 'ABC123'

这工作并返回结果。谢谢!

答案 1 :(得分:1)

您只需选择数字。如果您尝试搜索多个列,则可以执行以下操作:

SELECT * FROM [Database].[dbo].[TableName]
where SmallIntColumn = 123 AND CharColumn = 'ABC'

如果列是某种类型的数字,则它不能包含非数字条目。