我的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/