SqlCommand - 选择ISNULL

时间:2013-09-05 09:26:54

标签: c# sql sql-server

您好我正在尝试select * data但是对于名为payments的列,如果为NULL,我需要插入设置值0

我试着这样做:

string sqlcom = "SELECT (ISNULL(payments,0)) * FROM zajezd WHERE id >= '" + txt_od.Text + "'AND id <='" + txt_do.Text + "' AND year='" + klientClass.Rocnik() + "'";

但我仍然收到异常bad syntax near FROM

有人会帮我解决这个问题吗?

非常感谢

5 个答案:

答案 0 :(得分:4)

,放在*之前。试试这个

string sqlcom = "SELECT (ISNULL(payments,0)), * FROM zajezd WHERE id >= '" + txt_od.Text + "'AND id <='" + txt_do.Text + "' AND year='" + klientClass.Rocnik() + "'";

但我也建议你不要传递这样的参数。使用Parameterized query来避免sql注入。

答案 1 :(得分:3)

您需要逗号或清除*

SELECT (ISNULL(payments,0)), * FROM

SELECT (ISNULL(payments,0)) FROM

只是添加奖励的总和(感谢Liath)你不应该使用*。而是指定您真正需要的列。

同时删除外部括号,因为它们并非真正需要。

我还要补充一点,你应该为该列使用别名。

所以它会是:

SELECT ISNULL(payments,0) AS payments, Col1, Col2,..., Coln FROM...

或只是简单:

SELECT ISNULL(payments,0) AS payments FROM...

答案 2 :(得分:2)

(ISNULL(payments,0))
*

之间添加逗号

答案 3 :(得分:1)

要么删除*,要么在逗号(ISNULL(payments,0))*之间添加逗号

答案 4 :(得分:1)

试试这个

string sqlcom = "SELECT ISNULL(payments,0), * FROM zajezd WHERE id >= '" + txt_od.Text + "'AND id <='" + txt_do.Text + "' AND year='" + klientClass.Rocnik() + "'";

您的WHERE子句有点含糊不清。 <= txt_do.Text AND >= txt_od.Text

那不会过滤任何东西