我遇到了一个异常,
输出的T-SQL代码:
exec sp_executesql N'DELETE [UnitTest].[Persistent.ValueObject] WHERE [Id] = @Id AND (([Message] IS @Message_0 AND [Date] IS @Date_0) OR ([Message] IS @Message_1 AND [Date] IS @Date_1));',N'@Id uniqueidentifier,@Message_0 nvarchar(4000),@Date_0 nvarchar(4000),@Message_1 nvarchar(4000),@Date_1 nvarchar(4000)',@Id='0DB4C4AB-47C4-4BA2-BC88-89BCEF04E714',@Message_0=NULL,@Date_0=NULL,@Message_1=NULL,@Date_1=NULL
如果参数有值自然会用 "=" 如 [Id] = @Id, 如果,参数是一个 Null, 这样就会用 Is 如:[Message] IS @Message 可是,出错了.....
求助啊
你把NULL转化为空字符串,统一用=号
1、 select null,查出一个null
2、select ISNULL(null,''),你会发现null被转为''空字符串了
在传参数的时候加个非空判断就可以了(意思是可能出现null的地方加)