在ASP.NET代码中使用“ISNULL”的正确语法是什么?

时间:2013-11-26 13:45:41

标签: asp.net sql

我正在尝试执行这段代码:

public List<CustomerCaseSearch> FindCustomerInfo(string searchCondition)
{
    var Query = "SELECT  CustomerProfile.CustomerID,CustomerProfile.CustomerName,    isNull(k.CustomerSince, '''') as CustomerSince, isNull(k.CustomerStatus,'''') as CustomerStatus," +
                "CustomerProfile.CustomerType, CustomerCase.CaseID" +
                " FROM CustomerProfile INNER JOIN" +
                " CustomerCase ON CustomerProfile.CustomerID = CustomerCase.CustomerID "+ searchCondition;

    var customerCaseSearch = _CustomerCaseSearchRepository.ExecuteQueryData<CustomerCaseSearch>(@Query);
    List<CustomerCaseSearch> aList = customerCaseSearch.ToList();
    return aList;
}

我不断收到此异常消息:

SQLException was unhandled by user code. 
Incorrect syntax near 'isNull'

我需要知道,在我需要放置SQL查询的ASP.NET代码中使用isNull的正确语法是什么?

请注意,我是专业发展的新手,所以我的知识很低。亲切的帮助预计,将不胜感激。

3 个答案:

答案 0 :(得分:3)

您的查询结果如下:

SELECT      CustomerProfile.CustomerID,
            CustomerProfile.CustomerName,    
            isNull(k.CustomerSince, '''') as CustomerSince, 
            isNull(k.CustomerStatus,'''') as CustomerStatus,
            CustomerProfile.CustomerType, CustomerCase.CaseID 

FROM        CustomerProfile 

INNER JOIN  CustomerCase 
    ON      CustomerProfile.CustomerID = CustomerCase.CustomerID

您对ISNULL的来电是指带别名k的表格,但您的查询中没有包含该别名的表格。

值得注意的是,如果值为NULL,则要求它返回单个撇号的值,因此可能也想要更改

答案 1 :(得分:1)

您正在使用查询中找不到的表别名k,这就是失败的原因。

我重新格式化它以便于阅读,下面是正确的查询:

SELECT cp.CustomerID, cp.CustomerName, isNull(cp.CustomerSince, '') as CustomerSince,
       isNull(cp.CustomerStatus, '') as CustomerStatus, cp.CustomerType, cc.CaseID
FROM CustomerProfile cp
INNER JOIN CustomerCase cc ON cp.CustomerID = cc.CustomerID

然后你必须将你的搜索字符串添加到最后。

答案 2 :(得分:0)

可能是你错过了一个空格:

var Query = "SELECT  CustomerProfile.CustomerID,CustomerProfile.CustomerName,    isNull(k.CustomerSince, '''') as CustomerSince, isNull(k.CustomerStatus,'''') as CustomerStatus," +
                " CustomerProfile.CustomerType, CustomerCase.CaseID" +
                " FROM CustomerProfile INNER JOIN" +
                " CustomerCase ON CustomerProfile.CustomerID = CustomerCase.CustomerID "+ searchCondition;