大家好,我有这个查询,可能在列klisluz.cena
和klisluz.pocet
null或DBNull(不确定)值中。
请问如果有空的话,我怎么能在这个sQuery中阻止这些列,所以我可以插入到datagridview 0中?
由于这是JOIN查询,我不知道我应该在哪里实现ISNULL(klisluz.pocet,0)和ISNULL(klisluz.cena)
DataTable dt = new DataTable();
string sZakce = string.Empty;
if (zakce != null && zakce.Text != null)
{
sZakce = zakce.Text;
}
string sQuery = string.Format("SELECT zajsluz.akce, zajsluz.text, klisluz.cena,
klisluz.pocet, klisluz.subkey, zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON
zajsluz.ID = klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and
ISNULL(klisluz.subkey, '" + vyberradek + "') = '" + vyberradek + "'
GROUP BY klisluz.subkey, zajsluz.akce, klisluz.cena, zajsluz.text,
klisluz.pocet, zajsluz.ID", sZakce);
SqlDataAdapter SDA = new SqlDataAdapter(sQuery, spojeni);
SDA.Fill(dt);
dtg_ksluzby.DataSource = dt;
感谢您的时间。
到目前为止,我试过这个:
for (int i = 0; i < (dtg_ksluzby.Rows.Count - 0); i++)
{
if (dtg_ksluzby.Rows[i].Cells["pocet"].Value == null ||
(string)dtg_ksluzby.Rows[i].Cells["pocet"].Value == string.Empty)
{
dtg_ksluzby.Rows[i].Cells["pocet"].Value = 0;
}
if (dtg_ksluzby.Rows[i].Cells["cena"].Value == null ||
(string)dtg_ksluzby.Rows[i].Cells["cena"].Value == string.Empty)
{
dtg_ksluzby.Rows[i].Cells["cena"].Value = 0;
}
}
但是无法找到那些列名称。
答案 0 :(得分:3)
用指定的替换值替换NULL。
语法;
ISNULL ( check_expression , replacement_value )
例如;
SELECT ...., ISNULL(klisluz.cena, 0), ISNULL(klisluz.pocet, 0)
答案 1 :(得分:1)
尝试以下查询
string sQuery = string.Format("SELECT zajsluz.akce, zajsluz.text, klisluz.cena,
ISNULL(klisluz.pocet,0) as [pocet], klisluz.subkey, zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON
zajsluz.ID = klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and
ISNULL(klisluz.subkey, '" + vyberradek + "') = '" + vyberradek + "'
GROUP BY klisluz.subkey, zajsluz.akce, klisluz.cena, zajsluz.text,
ISNULL(klisluz.pocet,0), zajsluz.ID", sZakce);