-2

两个相同的查询在 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'

结果如下:- 查询结果

4

1 回答 1

3

本声明:

Declare @replyfileType AS Varchar = 'Audio';

声明一个字符的字符串,所以它相当于:

Declare @replyfileType AS Varchar(1) = 'A';

在 SQL Server 中使用字符串时始终包含长度!

Declare @replyfileType AS Varchar(255) = 'Audio';

我应该注意,如果您打印出@replyfileType错误将是显而易见的。

于 2021-09-03T12:05:58.407 回答