SQL:子句喜欢无法正常使用变量

时间:2018-07-19 11:00:56

标签: sql sql-server

MS SQL Server:

第一个sql:

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

结果返回 34 行,在列范围内,我仅收到文本 bunker

好。是的。

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

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

但是现在我得到 38 行。现在,行不仅包含文本 bunker 。 也有文字“ mecanisme端口

为什么? 我只需要输入文本 bunking 。 我该怎么做?

3 个答案:

答案 0 :(得分:5)

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

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

select id, scope
from delivery 
where scope like @SCOPE 
order by scope desc;

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

答案 1 :(得分:3)

错误仍然存​​在

  

DECLARE @SCOPE varchar ='%bunkering%'

请提及varchar数据类型的长度

使用

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

答案 2 :(得分:0)

我找到了这个解决方案:

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

一切正常。