如何在 SET 语句 SQL Server 2008 R2 中使用通配符

How to use wildcards in SET statement SQL Server 2008 R2

我正在构建一个 SQL 报告,其中包含最终将在 SSRS 中为最终用户设置的多个变量。为了在 SQL 服务器中进行测试,我声明了几个变量,现在想使用 SET 语句来赋值。一些变量分配了特定的值,而对于其他变量,我只想使用通配符。我试过使用 %'%',但出现语法错误。我在 SQL Server 2008 R2 中工作。

这是我的 DECLARESET 声明:

declare @start datetime
declare @end datetime
declare @Emp# varchar
declare @Posn varchar
declare @GL# varchar
declare @HrType varchar
declare @ProdCode varchar
declare @WComp varchar

set @start = '07/01/2015'
set @end = '07/31/2015'
set @Emp# = '068'
set @Posn = %
set @GL# = %
set @HrType = %
set @ProdCode = %
set @WComp = %

我是一个自学成才的新手,但我已经查看了我可以在 Whosebug 和 Google 中找到的所有信息。任何帮助将不胜感激!

如果您没有要分配的值,请不要 SET 变量的值。

如果稍后在查询中填充变量,则不需要初始值。

如果您想使用此参数捕获所有值,那么您的做法是错误的。

您可以将参数设置为 ALL。在这样的查询中使用您的参数:

SELECT * FROM TABLE
WHERE (ProdCode = @ProdCode OR @ProdCode = 'ALL') 

这是一个varchar。像往常一样使用单引号:

set @Posn = '%'

然后您需要确保在比较中使用 LIKE 而不是 =

如果这不起作用,则您的问题出在其他地方。