sql-server - 为什么 % 通配符在 SQL Server 中不能作为变量的内容工作?
问题描述
我对在变量中使用%
通配符感到困惑。
例如,这将起作用:
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+'%';
推荐阅读
- asp.net-mvc - MVC:无法弄清楚这段代码是如何命中存储过程的
- wordpress - 更新插件时出现 WordPress HTTP ERROR 500
- php - 在 Woocommerce 3 中隐藏特定产品的购物车中的数量字段
- drupal-8 - 通过扩展其路径来渲染具有多种显示模式的节点
- python - hacker rank compiler shows error when string length function input is modified
- php - 标题不起作用,没有错误
- watson-conversation - 在 Watson Assistant 中检测“Last Quarter”
- visual-studio-code - 如何忽略拼写检查器中的 Lorem Ipsum 文本?
- angular - 以角度4处理多个html文件
- android - 饼图 - 如何删除饼图上的 x 标签并在其旁边显示 ite?