如何在 T-SQL 中将变量设置为 all?
How to set variable to all in T-SQL?
我还在学习 SQL 我想知道是否有任何方法可以将变量设置为全部而不是任何特定值。我想要一些对我测试有用的东西。我知道这是怎么回事。
DECLARE @sku AS VARCHAR(30)
SET @sku = 'ProductA'
有没有办法让变量中的值保持打开状态。基本上是这样的。
DECLARE @sku AS VARCHAR(30)
SET @sku = '%'
或
DECLARE @sku AS VARCHAR(30)
SET @sku LIKE '%'
我不确定它在变量中是如何工作的。我试着找到它,但找不到满足我目的的东西。基本上我一直在将特定值与 % 之间的变量值更改。如有任何建议,我们将不胜感激。
已添加:
DECLARE @sku AS VARCHAR(30) = '%'
DECLARE @name AS VARCHAR(40) = '%'
select * from table1
where sku = @sku
select * from table2
where sku = @sku
select * from table3
where name = @name
基本上在上面的示例查询中,我必须在 3 个不同的表中注释和取消注释 where 子句。有一种情况,我把值放在@sku 的最上面,我可以在select 语句中使用where 子句。出于测试目的,我必须对 where 语句进行注释,但为此我需要在 3 个不同的查询中进行注释。无论如何,如果我可以将过滤器放在顶部而不是评论所有 3 个 where 子句。有道理吗?
如果您的目标是为参数使用可选的“全部”值,您可以这样做:
DECLARE @sku nvarchar(100) = '%'; -- or any other token
...
WHERE @sku IN (field, '%')
计算结果为:如果@sku 为 %
,则条件始终为真且 returns 所有行。
对于任何其他值,它仅过滤 field
等于参数的行。
我还在学习 SQL 我想知道是否有任何方法可以将变量设置为全部而不是任何特定值。我想要一些对我测试有用的东西。我知道这是怎么回事。
DECLARE @sku AS VARCHAR(30)
SET @sku = 'ProductA'
有没有办法让变量中的值保持打开状态。基本上是这样的。
DECLARE @sku AS VARCHAR(30)
SET @sku = '%'
或
DECLARE @sku AS VARCHAR(30)
SET @sku LIKE '%'
我不确定它在变量中是如何工作的。我试着找到它,但找不到满足我目的的东西。基本上我一直在将特定值与 % 之间的变量值更改。如有任何建议,我们将不胜感激。
已添加:
DECLARE @sku AS VARCHAR(30) = '%'
DECLARE @name AS VARCHAR(40) = '%'
select * from table1
where sku = @sku
select * from table2
where sku = @sku
select * from table3
where name = @name
基本上在上面的示例查询中,我必须在 3 个不同的表中注释和取消注释 where 子句。有一种情况,我把值放在@sku 的最上面,我可以在select 语句中使用where 子句。出于测试目的,我必须对 where 语句进行注释,但为此我需要在 3 个不同的查询中进行注释。无论如何,如果我可以将过滤器放在顶部而不是评论所有 3 个 where 子句。有道理吗?
如果您的目标是为参数使用可选的“全部”值,您可以这样做:
DECLARE @sku nvarchar(100) = '%'; -- or any other token
...
WHERE @sku IN (field, '%')
计算结果为:如果@sku 为 %
,则条件始终为真且 returns 所有行。
对于任何其他值,它仅过滤 field
等于参数的行。