SQL:子句LIKE与变量的工作不正确

a_s*_*ber 0 sql sql-server

MS SQL Server:

第一个sql:

select id, scope from delivery 
where scope like '%bunkering%'
order by scope desc
Run Code Online (Sandbox Code Playgroud)

结果返回34行,在列范围内,我只得到文本加注.

尼斯.这是正确的.

现在我想使用变量,如下所示:

DECLARE @SCOPE varchar = '%bunkering%'
select id, scope from delivery 
where scope like @SCOPE 
order by scope desc
Run Code Online (Sandbox Code Playgroud)

但现在我得到了38排.而且现在不仅有文字加油行.还有文字" mecanisme port "

为什么?我只需要文本加油.我怎么能这样做?

Gor*_*off 5

您需要一个变量声明的长度:

DECLARE @SCOPE varchar(255) = '%bunkering%';

select id, scope
from delivery 
where scope like @SCOPE 
order by scope desc;
Run Code Online (Sandbox Code Playgroud)

声明变量时,varchar没有长度默认为长度1.因此,您已将变量设置@SCOPE'%',应匹配所有行.