我在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)
答案 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";