2016-01-20 2 views
2

Я пытаюсь запустить SQL, содержащий инструкцию if-else в AS400, но он не работает. Я создаю представление с помощью i-Series Navigator для его запуска.Оператор if-else в DB2/400

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 . . 

Я попытался без написания является пустым, но вместо этого

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 expressio п вместо:

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. –

Смежные вопросы