2014-01-21 201 views
1

我有一个用户定义的函数,我想要做一个select并根据它是否大于或小于另一个来选择一个列。在WHERE子句中使用IF语句

例如:

Select 
    t.A, t.B 
From 
    Table t 
Where 
    if(t.A <= t.B) then 
    use t.A 
    else 
    use t.B 

这可能吗?提前致谢!

+0

什么是你预期如果在哪里会做?在这种情况下,“使用”是什么意思? – Jodrell

回答

2

好像你要

SELECT 
    CASE 
    WHEN t.A <= t.B 
    THEN t.A 
    ELSE t.B 
    END AS Smaller 
FROM Table t 
1

不!但是你可以使用一个case声明

Select 
    t.A, t.B 
From 
    Table t 
Where 
    (case when t.A <= t.B then t.A ELSE t.B END) = SomeValue 

,或者更小的列在select语句,只需要那么

Select 
    (case when t.A <= t.B then t.A ELSE t.B END) as column 
From 
    Table t 

注意 我以前没有使用SQL普遍,但快速googlez显示case语句是在9.x版本中添加的?

1

你真的想要?

SELECT MIN(t.A, t.B) AS SmallestAOrB FROM Table t