在SELECT语句中舍入字段的值

时间:2016-06-06 18:33:07

标签: c# sql sql-server code-behind

我需要做的是将字段舍入到2位小数,但不是通常的方式。我有一个下拉列表,它总是舍入到2位小数(CIT_NBR)。但是,在数据库表中,它有时会舍入为1位小数。所以现在我试图基于这个字段创建一个SELECT语句,但是我的前端将它存储为2个小数,我的后端可以存储为1或2个小数。不要问,这很复杂。 :O)

那么,我想做什么" aircode"是这样的:

SELECT * FROM VW_MOS_DPL_AccountValidation WHERE CUST_NUM = @CNum 
   AND Format(CIT_NBR, 2 decimals) = @CITNum

这样,它会强制表中的数据使用2位小数,因此可以将其与我的下拉列表进行比较。

这是我的代码块:

using (SqlConnection con2 = new SqlConnection(str2))
{
    using (SqlCommand cmd2 = new SqlCommand(@"SELECT * FROM VW_MOS_DPL_AccountValidation WHERE CUST_NUM = @CNum AND CIT_NBR = @CITNum", con2))
    {
        con2.Open();

        cmd2.Parameters.AddWithValue("@CNum", TBAccountNum.Text);

        string ddlCITVal2 = ddlCIT.SelectedValue;
        cmd2.Parameters.AddWithValue("@CITNum", ddlCITVal2);

        using (SqlDataReader DT2 = cmd2.ExecuteReader())
        {
            // If the SQL returns any records, process the info
            if (DT2.HasRows)
            {
                while (DT2.Read())
                {
.
.
.
etc

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

Cast the varchar to a decimal

SELECT SUM(Cast(CitNum as decimal(8,2))) as CitNum FROM table

答案 1 :(得分:0)

有一种更高效的方法,但这是最容易阅读和维护的,除非它导致真正的性能问题。

.html.twig

除非你真的意味着舍入到一个小数而不是你给出的例子,它只是截断一个尾随零,在这种情况下需要使用不同的方法。