为什么 % 通配符在 SQL 服务器中不能作为变量的内容工作?

Why the % wildcard is not working in SQL Server as contents of a variable?

我对在变量中使用 % 通配符感到困惑。

例如这会起作用:

SELECT * 
FROM TABLE 
WHERE column LIKE 'blah%'

但这不会:

DECLARE @myvar AS varchar = 'blah%'

SELECT * 
FROM TABLE 
WHERE column LIKE @myvar

我在这里错过了什么?

谢谢!

通过声明为变量,通配符就变成了另一种文字。此外,应为 VARCHAR 分配一个长度。然后这有效

DECLARE @myvar varchar(10) = 'blah'
SELECT * FROM TABLE WHERE column like @myvar+'%'

请看这个工作示例

drop table if exists #Stock;
go
create table #Stock(
  some_col      varchar(10) not null);

insert #Stock(some_col) values ('Stock abc'),('Stock abc'),('Stock abc');

DECLARE @myvar varchar = 'Stock%';
SELECT * FROM #Stock WHERE some_col like @myvar;

DECLARE @myvar2 varchar = 'Stock';
SELECT * FROM #Stock WHERE some_col like @myvar2+'%';