【问题标题】:C# SQL SELECT not working with WHERE = decimal variableC# SQL SELECT 不适用于 WHERE = 十进制变量
【发布时间】:2017-12-01 10:03:05
【问题描述】:

这是我的代码:

string query = "SELECT TEKN,KOMMENTAR FROM dbo.JOBBTEKN WHERE JOBBNR = " + jobId + ".00";
SqlDataReader reader = new SqlCommand(query, sqlConn).ExecuteReader();

这是我的数据:

我想使用确切的JOBBNR 获取多行,但这没有返回任何内容。

编辑: 查询有效,只是我很愚蠢,没有在正确的表中搜索。很抱歉浪费任何人的时间来提供帮助。

【问题讨论】:

  • 为什么还要为 jobbnr 考虑小数?好的旧整数有什么问题?
  • @jarlh 这不是我的数据库,我正在为我公司购买的不良软件创建自己的客户端!
  • 你能检查JOBBNBR的数据类型,还有C#中的jobId类型吗?
  • @Jacky 这是 SQL 中的一个小数,当我为用户显示它时,我将它转换为 c# 中的整数。

标签: c# mysql sql


【解决方案1】:

将jobId 包含在单引号中。将您的查询修改为:

"SELECT TEKN,KOMMENTAR FROM dbo.JOBBTEKN WHERE JOBBNR = '" + jobId + ".00'"

注意jobId周围的单引号。


查看cmets,我怀疑JOBBNR的数据类型是float;不是decimel。 float 数据类型内部包含多个精度,因此当您尝试在 WHERE = 子句中匹配它们时,由于精度不匹配,您可能无法得到结果。

有多种方法可以解决此问题。尝试类似的方法:

WHERE JOBBNR BETWEEN 1200.00 AND 1200.01

或

"WHERE JOBBNR BETWEEN '" + jobId + ".00' AND '" + jobId + ".01'"

【讨论】:

  • @AmitJoshi 对不起,伙计们,我在错误的表中搜索...这个数据库太混乱了!无论如何感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 2016-09-30
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多