为什么 % 通配符在 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+'%';
我对在变量中使用 %
通配符感到困惑。
例如这会起作用:
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+'%';