2012-08-02 22 views
0

我想在COBOL DB2中編寫一個SQL語句,它接受大量的可選字段。COBOL中的可選字段DB2

到目前爲止,我已經設法通過使用下面的代碼使VALID-FROM-DATE和VALID-TO-DATE和SYSTEM-ID可選。

MOVE A-CURRENT-TIMESTAMP(1:10) 
    TO A-VALID-FROM-DATE   
MOVE A-CURRENT-TIMESTAMP(1:10) 
    TO A-VALID-TO-DATE   

MOVE 0    
    TO A-SYSTEM-ID-FROM 
MOVE 999    
    TO A-SYSTEM-ID-TO 

但是現在我想創建第四個字段可選和它的字符字段。

我試過下面 - 它的作品在我的SQL-嚮導但不是當我運行程序:

MOVE '%'  
    TO A-NAME 

在下面的DB2 SQL語句:

SELECT          
     COALESCE(NAME,' ')     
     ,SYSTEM_ID        
     ,COALESCE(VALUE_DATE,'0001-01-01')  
FROM TABLE         
WHERE           
     NAME   LIKE :A-NAME    
    AND SYSTEM_ID BETWEEN :A-SYSTEM-ID-FROM 
        AND :A-SYSTEM-ID-TO  
    AND VALUE_DATE BETWEEN :A-VALID-FROM-DATE 
        AND :A-VALID-TO-DATE  
ORDER BY VALUE_DATE       

任何想法?

回答

1

該解決方案相當簡單。 代替

MOVE '%'  
    TO A-NAME 

我改成

MOVE '%%%%%%%'  
    TO A-NAME 

爲A-NAME是X(7)字段。

+3

一個方面,你可以使用「MOVE ALL'%'TO A-NAME」在源字段是文字的情況下完成同樣的事情。 – 2012-08-30 14:09:17

+1

是的,使用ALL'%'將使編譯器計算所需的%-signs數量,因此在使用文字時總是更準確的方式。 – 2014-03-14 10:09:28