如何在 case 语句中包含列名

发布于 2024-09-24 00:06:36 字数 413 浏览 1 评论 0原文

我需要根据变量值在 SQL 查询的 where 子句中包含列名。 例如, 1. 如果我有一个变量,例如@test,并且我为该变量分配了值 1/0。 2. 我有一个表,例如 table1,有 2 个列名 col1,col2

现在,我正在编写一个查询,通过一次仅包含一列来从表中获取一些数据,具体取决于 @test 变量(之前声明),即我需要包含 col1@test为1,则在查询的where子句中使用strong>;如果@test为0,则在col2中。

请让我知道解决方案尽快。

提前致谢

I need to include a column name in the where clause of SQL query depending on a variable value.
For Example,
1. If I have a variable,say,@test and I assigned the variable with the value 1/0.
2. I have a table ,say, table1 with 2 column names col1,col2.

Now, I am writing a query to fetch some data from the table by including only one column at a time depends on the @test variable(declared earlier) i.e. I need to include col1 in the where clause of the query if the @test is 1 and col2 if @test is 0.

Please let me know the solution asap.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

海之角 2024-10-01 00:06:37
declare @tbl table
(
    col1 int,
    col2 int

)

insert into @tbl select 10, 20

declare @test int

set @test = 1

select *
from @tbl
Where Case When @test = 1 Then Col1 Else Col2 End  = 10

如果数据类型不同

select *
from @tbl
Where Case when @test = 1 Then Col1 end = 10
        OR
      Case when @test = 2 Then Col2 end = 'sometext'
declare @tbl table
(
    col1 int,
    col2 int

)

insert into @tbl select 10, 20

declare @test int

set @test = 1

select *
from @tbl
Where Case When @test = 1 Then Col1 Else Col2 End  = 10

If datatype is different

select *
from @tbl
Where Case when @test = 1 Then Col1 end = 10
        OR
      Case when @test = 2 Then Col2 end = 'sometext'
方觉久 2024-10-01 00:06:37

稍微不同的方法:

Select *
From dbo.MyTable
Where Col1 = Case When @Test = 1 Then 10 Else Col1 End and
      Col2 = Case When @Test = 0 Then 'sometext' Else Col2 End 

此版本的查询可能sargable

A slightly different approach:

Select *
From dbo.MyTable
Where Col1 = Case When @Test = 1 Then 10 Else Col1 End and
      Col2 = Case When @Test = 0 Then 'sometext' Else Col2 End 

This version of the query may be sargable.

好多鱼好多余 2024-10-01 00:06:36
Select *
From dbo.MyTable
Where Case When @Test = 1 Then Col1 Else Col2 End  > 100
Select *
From dbo.MyTable
Where Case When @Test = 1 Then Col1 Else Col2 End  > 100
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文