提问人:hden 提问时间:4/6/2016 更新时间:4/6/2016 访问量:174
条件 SQL 语句 - 对要返回的列进行条件处理
Conditional SQL statement - conditioning on column to be returned
问:
我正在尝试制作一个条件选择语句,而我条件所依据的参数是我要返回的列。含义 - 如果表中某一列的内容为真,我想返回该列;如果没有,我想返回另一列。
前任:
IF table.obj_param_A = ?
BEGIN
SELECT obj_param_A FROM table
END
ELSE
BEGIN
SELECT obj_param_B FROM table
END
我知道这是行不通的,但这是我想要的大致想法。知道如何正确构建它吗?
答:
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
评论