使用UNION - VarChar到Numeric错误从C#查询字符串

时间:2015-03-17 17:54:40

标签: c# sql code-behind

我在C#Code Behind中获得了以下代码:

string strSQL = "SELECT DISTINCT CAST(LTRIM(RTRIM(CIT_NBR)) AS Decimal(12,2)) AS CIT_NBR 
FROM VW_MOS_DPL_AccountValidation 
WHERE CUST_NUM = '" + TBAccountNum.Text + "' 
UNION '00.00'
FROM VW_MOS_DPL_AccountValidation 
ORDER BY CAST(LTRIM(RTRIM(CIT_NBR)) AS Decimal(12,2)) DESC";

这在我添加UNION片段之前完美无缺,但我现在需要这个,因为这个SQL填充了一个下拉列表,用户想要这个"默认"值。

有人可以帮我弄清楚我做错了什么吗?我得到的确切错误是:

  

将数据类型varchar转换为数字时出错。

CIT_NBR是一个VarChar。这是唯一的专栏。它被转换为十进制(12,2),因为当它写入新表时,它以这种方式存储。不要问,我无法控制后端......所以,我需要添加值00.00,而且我不知道如何在SQL字符串中执行此操作。我尝试使用双引号,它不喜欢它。我尝试使用单引号,它给了我上面的错误。

是的,我知道SQL注入风险,但是一旦确实有效,我就会解决这个问题。 :O)

1 个答案:

答案 0 :(得分:1)

试试这个......

string strSQL = "SELECT DISTINCT CAST(LTRIM(RTRIM(CIT_NBR)) AS Decimal(12,2)) AS CIT_NBR 
FROM VW_MOS_DPL_AccountValidation 
WHERE CUST_NUM = '" + TBAccountNum.Text + "' 
UNION 
SELECT 0.0
ORDER BY CAST(LTRIM(RTRIM(CIT_NBR)) AS Decimal(12,2)) DESC";