1

给定一个表 MyTable,其列 MyCol 定义为 NVARCHAR(Max),第一个 SELECT 按预期返回 SSMS 中的一行,而第二个选择不返回任何行。

DECLARE @code NVarChar='ABC'

SELECT * FROM MyTable q WHERE MyCol = 'ABC'
SELECT * FROM MyTable q WHERE MyCol = @code

使用 ADO.Net 填充参数 @code 并执行查询也返回一行,如预期的那样。

为什么第二个 SELECT 在 SSMS 中执行时不返回任何行?

4

1 回答 1

3

Because you have no length on the definition of the variable. Use:

DECLARE @code NVarChar(255) = N'ABC';

Or some length. The default length for declare is 1.

于 2013-09-03T01:32:02.470 回答