在 SQL Select 语句中使用 If else
Posted
技术标签:
【中文标题】在 SQL Select 语句中使用 If else【英文标题】:Using If else in SQL Select statement 【发布时间】:2012-11-11 16:07:07 【问题描述】:我有一个 select 语句,它将返回 2 列。
ID | IDParent
然后在我的程序中我必须测试if IDParent is < 1 then use ID ELSE use IDParent
有没有办法在 SQL 中使用类似 If Else 的条件来仅返回单个值?
【问题讨论】:
[堆栈溢出链接]:***.com/questions/5951157/…希望这有帮助 还有:***.com/a/63480/856172 【参考方案1】:你可以使用CASE
SELECT ...,
CASE WHEN IDParent < 1 THEN ID ELSE IDPArent END AS ColumnName,
...
FROM tableName
【讨论】:
【参考方案2】:在这里,使用CASE Statement
并找到结果:
select (case when condition1 then result1
when condition2 then result2
else result3
end) as columnname from tablenmae:
例如:
select (CASE WHEN IDParent< 1 then ID
else IDParent END) as columnname
from tablenmae
【讨论】:
【参考方案3】:SELECT CASE WHEN IDParent < 1
THEN ID
ELSE IDParent
END AS colname
FROM yourtable
【讨论】:
【参考方案4】:查询如下
SELECT (CASE WHEN tuLieuSo is null or tuLieuSo=''
THEN 'Chưa có đĩa'
ELSE 'Có đĩa' End) AS tuLieuSo,moTa
FROM [gPlan_datav3_SQHKTHN].[dbo].[gPlan_HoSo]
【讨论】:
【参考方案5】:sql server 2012
with
student as
(select sid,year from (
values (101,5),(102,5),(103,4),(104,3),(105,2),(106,1),(107,4)
) as student(sid,year)
)
select iif(year=5,sid,year) as myCol,* from student
myCol sid year
101 101 5
102 102 5
4 103 4
3 104 3
2 105 2
1 106 1
4 107 4
【讨论】:
【参考方案6】:您可以在select
查询下简单地使用if
语句,就像我在下面描述的那样
if(some_condition,if_satisfied,not_satisfied)
SELECT IF(IDParent < 1,ID,IDParent) FROM yourTable ;
【讨论】:
你的意思应该是IIF【参考方案7】:这里是一些使用CASE WHEN
的例子
SELECT
CASE WHEN A > 1 THEN
'Greater than 1'
END
FROM TRIANGLES
.
SELECT
CASE WHEN A > 1 THEN
A
END
FROM TRIANGLES
.
SELECT
CASE WHEN A > 1 and B > 1 THEN
'Greater than 1'
END
FROM TRIANGLES
.
SELECT
CASE WHEN A > 1 THEN
'greater than 1'
ELSE
'less than 1'
END
FROM TRIANGLES
.
SELECT
CASE WHEN A > 1 THEN
'greater than 1'
ELSE CASE WHEN A >= 0 THEN
'greater than or equal 0'
ELSE
'less than 0'
END
END
FROM TRIANGLES;
希望对你有帮助
【讨论】:
【参考方案8】:您也可以使用联合构造。我不确定 CASE 是否是一个常见的 SQL 构造...
SELECT ID FROM tabName WHERE IDParent<1 OR IDParent IS NULL
UNION
SELECT IDParent FROM tabName WHERE IDParent>1
【讨论】:
【参考方案9】:select
CASE WHEN IDParent is < 1 then ID else IDParent END as colname
from yourtable
【讨论】:
【参考方案10】:我对此结果有疑问:
SELECT Top 3
id,
Paytype
FROM dbo.OrderExpresses
WHERE CreateDate > '2018-04-08'
结果是:
22082 1
22083 2
22084 1
我想在查询中将代码更改为字符串,所以我使用此代码:
SELECT TOP 3
id,
CASE WHEN Paytype = 1 THEN N'Credit' ELSE N'Cash' END AS PayTypeString
FROM dbo.OrderExpresses
WHERE CreateDate > '2018-04-08'
结果是:)
22082 Credit
22083 Cash
22084 Credit
【讨论】:
【参考方案11】:这里有两种方式“IF”或“CASE”。
SELECT IF(COLUMN_NAME = "VALUE", "VALUE_1", "VALUE_2") AS COLUMN_NAME
FROM TABLE_NAME;
或
SELECT (CASE WHEN COLUMN_NAME = "VALUE" THEN 'VALUE_1' ELSE 'VALUE_2' END) AS COLUMN_NAME
FROM TABLE_NAME;
【讨论】:
以上是关于在 SQL Select 语句中使用 If else的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL If语句使用select进行比较[重复]