where子句中两个相同的查询返回不同的结果。第一个查询使用SQL参数变量第二个查询的字符串值为如下所述。两个查询的结果应该是相同的,因为它们都具有相同的值,但它没有发生。原因是什么呢?
Declare @messageID AS INT=720987
Declare @replyfileType AS Varchar='Audio'
select VoiceMessageReply from MDBDetails where MessageID = @messageID and FileType=@replyfileType
select VoiceMessageReply from MDBDetails where MessageID = @messageID and FileType='Audio'
结果为:-查询结果
声明:
Declare @replyfileType AS Varchar = 'Audio';
声明一个字符串,所以它相当于:
Declare @replyfileType AS Varchar(1) = 'A';
在SQL Server中使用字符串时总是包含长度!
Declare @replyfileType AS Varchar(255) = 'Audio';
我应该注意,如果你打印出@replyfileType
,错误将是明显的。