我試圖做一個有條件的選擇語句,我調理的參數是我想要返回的列。含義 - 如果表中某列的內容爲真,我想返回該列;如果不是,我想返回另一列。有條件的SQL語句 - 條件返回列
例:
IF table.obj_param_A = ?
BEGIN
SELECT obj_param_A FROM table
END
ELSE
BEGIN
SELECT obj_param_B FROM table
END
我知道這是不行的,但它是我想要的總體思路。任何想法如何正確地構造這個?
我試圖做一個有條件的選擇語句,我調理的參數是我想要返回的列。含義 - 如果表中某列的內容爲真,我想返回該列;如果不是,我想返回另一列。有條件的SQL語句 - 條件返回列
例:
IF table.obj_param_A = ?
BEGIN
SELECT obj_param_A FROM table
END
ELSE
BEGIN
SELECT obj_param_B FROM table
END
我知道這是不行的,但它是我想要的總體思路。任何想法如何正確地構造這個?
如果你不關心列名返回,則可以使用CASE
SELECT
CASE
WHEN obj_param_A = ? THEN obj_param_A
ELSE obj_param_B
END AS value
FROM table
下面是你如何使用有關特定列的表信息,以便從特定的列中選擇一個例子。
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只有當它是不是第一列
什麼是在這種情況下的價值? – hden
值是結果列的名稱 – LoztInSpace