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

Dan*_*uss 5 sql t-sql sql-server ssms sql-server-2008

对包含 Smallint 列的表运行 select 语句并收到上述错误:

SELECT * FROM [Database].[dbo].[TableName]
where ColumnName = 'ABC123'
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Bri*_*ian 1

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

SELECT * FROM [Database].[dbo].[TableName]
where SmallIntColumn = 123 AND CharColumn = 'ABC'
Run Code Online (Sandbox Code Playgroud)

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