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



MS SQL Server:

第一个sql:

select id, scope from delivery 
where scope like '%bunkering%'
order by scope desc

结果返回34行,在列范围内,我只得到文本填充

不错。这是正确的。

现在我想使用变量,像这样:

DECLARE @SCOPE varchar = '%bunkering%'
select id, scope from delivery 
where scope like @SCOPE 
order by scope desc

但现在我得到了38行。现在,行中不仅有文本加油。还有文本">mecanisme端口">

为什么?我只需要文本加油。我该怎么做?

您需要变量声明的长度:

DECLARE @SCOPE varchar(255) = '%bunkering%';
select id, scope
from delivery 
where scope like @SCOPE 
order by scope desc;

在声明变量时,没有长度的varchar默认为长度1。因此,您已经将变量@SCOPE设置为'%',它应该与所有行匹配。

错误在中持续存在

SCOPE声明varchar='%bunkering%'

请提及varchar数据类型的长度

使用

DECLARE @SCOPE varchar(50) = '%bunkering%'

我找到了这个解决方案:

DECLARE @SCOPE varchar = 'bunkering'
select id, scope from delivery 
where scope like '%' + @SCOPE + '%' 
order by scope desc

而且它工作得很好。

最新更新