SQL语句中如何对varchar类型的列进行数值大小的比较

问题

一个varchar列,里面的内容有字符例如slkdjg,dkyiu等等,有数字,现在想对此列进行数值大小的比较例如

select * from table1 where field1>20

 

方法

如果字符串中只有一个连续的整数数字子串,则
where cast(substring
(field1,
patindex('%[0-9]%',field1),
len(field1)-patindex('%[0-9]%',field1)-patindex('%[0-9]%',reverse(field1))+2)
as int)>20

解释

先将整数数字子串截取出来然后转成 int 类型再进行比较

 

你可能感兴趣的:(SQL语句中如何对varchar类型的列进行数值大小的比较)