条件 SQL 语句 - 对要返回的列进行条件处理

Conditional SQL statement - conditioning on column to be returned

提问人:hden 提问时间:4/6/2016 更新时间:4/6/2016 访问量:174

问:

我正在尝试制作一个条件选择语句,而我条件所依据的参数是我要返回的列。含义 - 如果表中某一列的内容为真,我想返回该列;如果没有,我想返回另一列。

前任:

IF table.obj_param_A = ?
BEGIN
SELECT obj_param_A FROM table
END
ELSE
BEGIN
SELECT obj_param_B FROM table
END

我知道这是行不通的,但这是我想要的大致想法。知道如何正确构建它吗?

SQL 条件语句

评论


答:

0赞 Eric 4/6/2016 #1

如果您不关心返回的列名,则可以使用CASE

SELECT 
    CASE  
        WHEN obj_param_A = ? THEN obj_param_A 
        ELSE obj_param_B 
    END AS value 
FROM table

评论

0赞 hden 4/6/2016
在这种情况下,什么是价值?
0赞 LoztInSpace 4/6/2016
值是结果列的名称
0赞 TsTeaTime 4/6/2016 #2

下面是一个示例,说明如何使用有关特定列的表信息,以便从特定列中进行选择。

Drop Table dbo.Test
Create Table dbo.Test (iVersion int, iVersion2 smallmoney)
Insert Into dbo.Test 
Select 1, 1.12

Declare @Test as nvarchar(200)
Select @Test = Column_Name  from information_schema.columns where Table_Schema = 'dbo' and table_name = 'test' and Ordinal_Position = 1

--IF (@Test = 'iVersion') --Equal To iVersion
IF (@Test != 'iVersion') ---Not Equal To iVersion
BEGIN
SELECT iVersion FROM dbo.Test
END
ELSE
BEGIN
SELECT iVersion2 FROM dbo.Test
END

这应该从 iVersion2 返回数据,因为第一列的名称是“iVersion”,而 If 语句仅在它不是第一列时才返回 iVersion