我需要根据保存数字的nvarchar列获取数据,出现此错误:将nvarchar值“ 362X”转换为数据类型int时,转换失败。我试过了:
select modelcode from model
where cast(modelcode as int )> 10000 - ERROR
where cast(modelcode as bigint )> 10000 - ERROR
where pws_modelcode+0 > 10000 - ERROR
order by ModelCode asc
我想念什么?
在SQL Server中,您可以使用try_convert()
或try_cast()
:
where try_cast(modelcode as int) > 10000
在其他数据库中,可以将case
与正则表达式一起使用:
where (case when modelcode ~ '^[0-9]+$' then cast(modelcode as int) end) > 10000
用负号替换除负号以外的所有非数字字符,然后转换为INT。
select modelcode from model where cast(REGEXP_REPLACE(modelcode,'^0-9-','') as int )> 10000