C# 带空参数的SQL选择查询

C# 带空参数的SQL选择查询,c#,sql,select,C#,Sql,Select,我在2个类似的SQL Select查询中出错,我的假设是我错误地使用了NULL。有人看了我一眼,告诉我哪里出了问题 string CountHolidayQuery = "SELECT StartDate, EndDate FROM [Holiday] WHERE PayrollNo = @PayrollNo AND Authorised IS NOT Null"; 及 authorized=Null无效且应授权为Null或authorized不为Null在SQL中,Null不被视为一个值,实

我在2个类似的SQL Select查询中出错,我的假设是我错误地使用了NULL。有人看了我一眼,告诉我哪里出了问题

string CountHolidayQuery = "SELECT StartDate, EndDate FROM [Holiday] WHERE PayrollNo = @PayrollNo AND Authorised IS NOT Null";


authorized=Null无效且应授权为Null或authorized不为Null在SQL中,Null不被视为一个值,实际上是一个特例,例如,它的语法为Null且不为Null

string CountHolidayQuery = "SELECT StartDate, EndDate FROM [Holiday] WHERE PayrollNo = @PayrollNo AND Autorised Is Not Null";
而且

string CountRequestedQuery = "SELECT StartDate, EndDate FROM [Holiday] WHERE PayrollNo = @PayrollNo AND Authorised Is Null";
在第一条语句中,它表示授权不应为null,但键入的语句不正确,而是读取Autorised

it should is not null,query is missing is is


第二个查询authorized=Null不是有效的sql语法。

我认为您缺少关键字is

因此,声明如下:

string CountHolidayQuery = "SELECT StartDate, EndDate FROM [Holiday] WHERE PayrollNo = @PayrollNo AND Autorised is NOT Null";

执行此操作后,错误更改为>,System.Data.OleDb.OledBeException中发生类型为“System.Data.OleDb.OledBeException”的未处理异常。其他信息:未为一个或多个必需参数提供值。这是因为在is Not Null语句中,您键入了Autorised而不是Authorized Hanks Alfie,真不敢相信我错过了这个机会。请不要像那样编写内联SQL,除非您意识到其中的危险——请参阅和。特别是如果你正在处理工资单数据。。。
SELECT StartDate, EndDate FROM [Holiday] WHERE PayrollNo = @PayrollNo AND Autorised IS NOT Null";
string CountHolidayQuery = "SELECT StartDate, EndDate FROM [Holiday] WHERE PayrollNo = @PayrollNo AND Autorised is NOT Null";