将整数转换为转换后的varchar T-SQL字段

问题描述:

在我正在使用的数据库中,我有一个数据类型为varchar(10)的表中的字段。该字段可以为空,并且不必包含整数,但大部分时间都是这样。我将我查询中每次迭代的WHERE子句中该字段的值与一个整数值进行比较。小数点右边必须至少有一个数字,最多可以有2位小数,但大多数情况下会有1. 0.00可以与0比较,但0不符合条件,因为它不符合条件在它之后没有小数。什么是最安全的公式使用,以便我只考虑非空双值?将整数转换为转换后的varchar T-SQL字段

假设我有我的表中这些值:

NULL
2.49
2.0
2.1
2.4

我只希望这些考虑这些值在此表达​​式中为真:
2.49
2.0
2.1
2.4

这里的一个开始..我还没有在NULL也不十进制情况想通..

并转换(INT,fieldname.sortorder)= 2

添加一个附加条件来进行字符串比较。

AND fieldname.sortorder LIKE '%[0-9].[0-9]%' 
AND CONVERT(INT, fieldname.sortorder)= 2 
+0

我得到了2号线的错误..所以我不得不这样做:和转换(INT,CAST(fieldname.sortorder为十进制(10,2)))= @ sortorderint ......作为对于第一行......我们不应该依赖%,因为这意味着什么不是吗?现在看起来不错,但可能可以改进。 – MacGyver