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 。 我该怎么做?
答案 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
一切正常。