Search code examples
sqldb2

SQL0420N Invalid character found in a character string argument of the function "DECFLOAT"


I got the error

SQL0420N Invalid character found in a character string argument of the function "DECFLOAT"

when executing this query. I am puzzled as I cannot detect any error or problem anymore. Can you help me? My database is a IBM DB/2 running on Linux, version 10.5.

SELECT 
    RTRIM(b.TOPOB) AS TOPOB, 
    a.TESTID, 
    a.AFO AS AFO, 
    DATE(a.ERFTS) AS DATUM, 
    a.WAFERNUM, 
    CHAR(b.rownum * 100) || CHAR(b.colnum) AS COLNUM,
    CAST(b.devlres AS DECIMAL(10, 2)) AS ELEM_COS_RDIFF,
    CAST(d.gmrcoef AS DECIMAL(10, 2)) AS ELEM_HC,
    CAST(d.amrcoef AS DECIMAL(10, 2)) AS ELEM_LINEARITY_ERROR,
    CAST(b.devdres AS DECIMAL(10, 2)) AS ELEM_RCOS,
    CAST(b.devhres AS DECIMAL(10, 2)) AS ELEM_RGES,
    CAST(b.devestarres AS DECIMAL(10, 2)) AS ELEM_RSIN,
    CAST(d.pinangle AS DECIMAL(10, 2)) AS ELEM_SENS_NMAX,
    CAST(d.senres AS DECIMAL(10, 2)) AS ELEM_SENS_NMIN,
    CAST(b.devkres AS DECIMAL(10, 2)) AS ELEM_SIN_RDIFF 
FROM 
    bouser.mrchm_hdr AS a
INNER JOIN 
    bouser.mrchm_data AS b ON b.testid = a.testid
INNER JOIN 
    bouser.mrchc_data AS d ON d.testid = a.testid 
                          AND b.topob = d.topob 
                          AND b.rownum = d.rownum 
                          AND b.colnum = d.colnum
INNER JOIN (
    SELECT 
        SERIENNR, 
        AKTMESSUNG 
    FROM 
        BOUSER.AFO0100 
    WHERE 
        Produkt LIKE 'Tethys%'
) T ON T.SERIENNR = a.WAFERNUM  
WHERE 
    T.AKTMESSUNG = 'Y' 
    AND DATE(a.ERFTS) > CURRENT DATE - 2247 DAYS 
    AND a.afo = 9053 
    AND a.lastview = 'Y'
ORDER BY 
    a.WAFERNUM, COLNUM;

Solution

  • it turns out that the query is basically correct. As T.SERIENNR is CHAR and a.WAFERNUM is BIGINT a direct assignment cannot be made. The correction would be:

    ON T.SERIENNR = CHAR(a.WAFERNUM)