我正在尝试执行这段代码:
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的正确语法是什么?
请注意,我是专业发展的新手,所以我的知识很低。亲切的帮助预计,将不胜感激。
答案 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;