我正在尝试过滤一些数据 - 我有一个看起来像主要是smallint / int的列。无论如何我有可以运行where语句来说哪里不是int或者哪里不是小int?
Microsoft SQL Server管理器。
如果你想要一个where子句来告诉你列是否包含无法转换为int
或smallint
的信息,你可以使用try_cast
:
SELECT *
FROM <TableName>
WHERE TRY_CAST(<ColumnName> AS Int) IS NULL
您可以将int
更改为smallint
以获取无法转换为smallint
的值,但可以转换为int
。
不要忘记将<TableName>
和<ColumnName>
替换为相关表和列的名称。
如果Try_Cast
中的值为null或者如果它不能转换为<ColumnName>
,则内置函数的int
将返回null(并且因为所有smallint
值也可以转换为int
,所以它也不能转换为smallint
)。