首页 > 解决方案 > 为什么 % 通配符在 SQL Server 中不能作为变量的内容工作?

问题描述

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

例如,这将起作用:

SELECT * 
FROM TABLE 
WHERE column LIKE 'blah%'

但这不会:

DECLARE @myvar AS varchar = 'blah%'

SELECT * 
FROM TABLE 
WHERE column LIKE @myvar

我在这里想念什么?

谢谢!

标签: sql-serverwildcard

解决方案


通过将通配符声明为变量,通配符就变成了另一个文字。此外,应该为 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+'%';

推荐阅读