我的C#程序中有一条SQL语句,如下所示:

SELECT * FROM XXX.dbo.XXX
WHERE Source = 'OH'
  AND partnum = '1231202085'
ORDER BY partnum, Packaging, Quantity


在SQL Server管理中运行此查询时,结果按预期顺序排列。
我的前3个结果具有相同的partnum和数量为32.0、50.8和51.0的包装。

但是,当我从程序中运行查询时,第一个返回数量为50.8的结果集。数量的数据类型为十进制(18,9)。我尝试了强制转换,它似乎不是数据类型问题。

我不知道为什么它得到中等数量。



谢谢你们的快速响应,但是经过更多测试之后,我在C#代码而不是sql中发现了问题。

得到查询结果后,我不得不:

if (PurchOrder.Read())
      while (PurchOrder.Read())

忽略了这样的事实,即一读实际上会读到我的第一个结果,而那一会儿读到我的第二个结果。

香港专业教育学院将if语句替换为:

if (PurchOrder.HasRows == true)

一切看起来都很好。

再次感谢您的答复。对不起误导性问题。

-科迪

最佳答案

如果partnum是字母数字,则除非您选择


左键盘部分编号输出到完全相同的字符数
用一些专门的字母数字排序进行排序。我通常使用:

order by
RIGHT(REPLICATE('0', 1000) + LTRIM(RTRIM(CAST([field_name] AS VARCHAR(8000)))), 1000)



当然,如果您的字段较小,则可以使用低得多的填充数。

关于c# - 订购错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10128441/

10-11 22:29