2016-01-20 156 views
2

我试图运行一个包含AS400中的if-else语句的SQL,但它不起作用。我正在使用i Series Navigator创建一个View来运行它。DB2/400中的If-else语句

SELECT IF FIELD1 IS NOT NULL THEN 'AAA' ELSE 'BBB' END IF 
FROM LIB.TABLE1 

我得到的错误是:

SQL State: 42601 
Vendor Code: -199 
Message: [SQL0199] Keyword IS not expected. Valid tokens: , FROM INTO. Cause . . 

我试图不写为null而是

SELECT IF FIELD1 ='' THEN 'AAA' ELSE 'BBB' END IF 
    FROM LIB.TABLE1 

然后我收到以下错误:

SQL State: 42601 
Vendor Code: -104 
Message: [SQL0104] Token = was not valid. Valid tokens: , FROM INTO. Cause . . . . . : A syntax error was detected at token =. Token = is not a 

回答

7

使用CASE表示ñ代替:

SELECT CASE WHEN FIELD1 IS NOT NULL THEN 'AAA' ELSE 'BBB' END 
FROM LIB.TABLE1; 

IF是控制流结构:

IF condition THEN 
    SELECT ... 
ELSE 
    SELECT ... 
END IF 
+1

它工作正常,谢谢 – ehh

+0

CASE表达式... – jarlh

+0

@jarlh谢谢:) – lad2025

-1
SELECT ABC, DEF, 
CASE WHEN (substring(GHI,1,4)) IS 'SOTH' THEN 'J' ELSE 'N' END as SOTH 
WHERE ABC like 'ABC%' 
GROUP BY ABC,DEF,GHI 
+2

你应该解释一下你的解决方案,指出相关的部分,并可能提供一些有用的链接......如......你知道...... SO的回答风格。 –