Sql 检查字符字段中的数字

Sql 检查字符字段中的数字,sql,sql-server,Sql,Sql Server,我正在研究一个数据库,在这个数据库中,一些聪明的人认为在字符字段中存储数字和字母(没有什么好的理由)是个好主意 现在我需要选择数字低于某个值的位置,但由于某些记录中存在字母,因此显然会出现错误 我试过以下方法 select column1 from table1 where ISNUMERIC(column1)=1 AND column1<=16 选择第1列 来自表1 其中ISNUMERIC(第1列)=1 第1列这是SQL Server中的一个已知问题。SQL Server 2012+中

我正在研究一个数据库,在这个数据库中,一些聪明的人认为在字符字段中存储数字和字母(没有什么好的理由)是个好主意

现在我需要选择数字低于某个值的位置,但由于某些记录中存在字母,因此显然会出现错误

我试过以下方法

select column1
from table1
where ISNUMERIC(column1)=1
AND column1<=16
选择第1列
来自表1
其中ISNUMERIC(第1列)=1

第1列这是SQL Server中的一个已知问题。SQL Server 2012+中的正确解决方案是使用
try\u convert()


注意:这两种方法都假定字符串值是整数。如果可以是十进制数,则使用适当的类型进行转换。

如果是数字,则强制转换列

select column1
from table1
where ISNUMERIC(column1)=1
AND CAST(column1 AS DECIMAL(18,2)) <= 16.0
选择第1列
来自表1
其中ISNUMERIC(第1列)=1

和CAST(column1为DECIMAL(18,2))这个case语句给了我一个sytax错误“结尾处语法不正确,期望AND,OR THEN”
select colum1
from table1
where (case when isnumeric(column1) = 0
            then 999
            else convert(int, column1)
       end) <= 16
select column1
from table1
where ISNUMERIC(column1)=1
AND CAST(column1 AS DECIMAL(18,2)) <= 16.0