我正在使用SQLServer2008 R2,需要搜索十进制数据字段
我有像
ID | Amount
1 68.88
2 65.55
其中金额为十进制类型(18,2)
现在我正在使用EntityFramework6.0并进行类似为
的查询whereClause = t => (#some_condition1) &&
(#some_condition2) &&
SqlFunctions.StringConvert((decimal)t.Amount).Contains(searchfields)
其中searchfields是一个字符串数据类型,并且包含" 68"期望是它应该获得ID为1的行(子串搜索)
现在有趣的是,如果我搜索68.88它正在搜索但不是68。
编辑
罪魁祸首是 SqlFunctions.StringConvert 对于sql server它正在进行舍入,所以转换为
SqlFunctions.StringConvert(68.88) will get converted to 69
现在的问题是如何避免这种四舍五入。
更新 使用Floor函数获取数字而不关心小数
SqlFunctions.StringConvert(decimal.Floor(68.88)) will get converted to 68
答案 0 :(得分:1)
尝试SqlFunctions.StringConvert()
system.data.entity.sqlserver
名称空间。
答案 1 :(得分:0)
试试这个
ToolTipManager