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

Query string from C# using UNION - VarChar to Numeric error

我在 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 正在填充一个下拉列表并且用户想要这个 "default" 值。

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

Error converting data type varchar to numeric.

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

是的,我知道 SQL 注入风险,但一旦它真正起作用,我会修复它。 :o)

试试这个...

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";