Re: Detecting Numeric Only Strings via SQL/Oracle

From: Yasuhiro Ushitaki <ushi_at_po.globe.or.jp>
Date: 1996/11/24
Message-ID: <01bbda0a$60dc5080$LocalHost_at_ns.globe.or.jp>#1/1


Hi, Oracler!

Chris Gatto <cgatto_at_nbnet.nb.ca> wrote in article <3295F505.120C_at_nbnet.nb.ca>...
>
> SELECT "DC_LINE_CODING"."AMOUNT_FL"
> FROM "DC_LINE_CODING"
> WHERE To_Number(SubStr("DC_LINE_CODING"."GL_CODE_ID",1,5)) > 03999
>
> The problem I have is with the WHERE clause. The GL Code Id is a 5
> character
> string which can contain alpha characters. I want to ignore these GL
> Code Ids
> and only consider numeric-only GL Code Ids. There does not seem to be
> an Oracle

One of the solution is following.

   SELECT "DC_LINE_CODING"."AMOUNT_FL"
     FROM "DC_LINE_CODING"
    WHERE DECODE(

            INSTR(
              TRANSLATE(UPPER("DC_LINE_CODING"."GL_CODE_ID"),
                        "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",
                        "0123456789XXXXXXXXXXXXXXXXXXXXXXXXXX"),
              "X"),
            0,"DC_LINE_CODING"."GL_CODE_ID",NULL) > 03999

UPPER & TRANSLATE put each alpha charecters into "X" on GL_CODE_ID. INSTR searches "X" on TRUNSLATE's result and returns position. If there is no "X", it returns 0.
And DECODE returns GL_CODE_ID on case of INSTR's result is 0, returns NULL on other cases (there are some "X").

BTW, it's puzzle.

-- 
Yasuhiro Ushitaki / Toyo Information Systems Co.,Ltd.

 
Received on Sun Nov 24 1996 - 00:00:00 CET

Original text of this message