Very interesting Mark, I shall remember that for the time when Firebird3 is
coming here.

Greetings.

Walter.


On Sat, Apr 25, 2015 at 3:14 AM, Mark Rotteveel m...@lawinegevaar.nl
[firebird-support] <firebird-support@yahoogroups.com> wrote:

>
>
> On 25-4-2015 08:08, 'Walter R. Ojeda Valiente'
> sistemas2000profesio...@gmail.com [firebird-support] wrote:
> > This article:
> >
> >
> https://firebird21.wordpress.com/2015/04/23/validando-que-el-contenido-de-un-char-o-varchar-sea-numerico/
> >
> > Also has examples con minus signs, inverse conditions, etc.
> >
> > Exponential notation not, because it is not usually used with commercial
> > applications. Any way, the idea is to show fastly whether there are o
> > not columns CHAR or VARCHAR with numeric values. No matter if they are
> > smallint, integer, bigint, etc.
> >
> > Using exceptions you can know that there are problematic rows, but not
> > which are. (Well, at least not so easily as a SELECT ... SIMILAR TO does)
>
> With Firebird 3 functions you can define a function isvalidint:
>
> CREATE FUNCTION isvalidint(stringValue VARCHAR(25))
> RETURNS BOOLEAN
> AS
> DECLARE intValue INT;
> BEGIN
> BEGIN
> intValue = CAST(stringValue AS INT);
> RETURN TRUE;
> END
> WHEN ANY DO
> RETURN FALSE;
> END
>
> Example table:
> CREATE TABLE tableIntAsVarchar (
> ID INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
> intAsVarchar VARCHAR(25) NOT NULL
> );
>
> Sample data:
> INSERT INTO tableIntAsVarchar (intAsVarchar) VALUES ('123');
> INSERT INTO tableIntAsVarchar (intAsVarchar) VALUES ('-123');
> INSERT INTO tableIntAsVarchar (intAsVarchar) VALUES ('Not a valid int');
>
> SELECT * FROM tableIntAsVarchar WHERE NOT isvalidint(intAsVarchar)
>
> Will only return the last inserted row (with value "Not a valid int").
>
> Similarly you could create a isValidBigint, isValidDoublePrecision etc.
>
> Mark
> --
> Mark Rotteveel
>  
>
  • ... sboyd...@gmail.com [firebird-support]
    • ... 'Walter R. Ojeda Valiente' sistemas2000profesio...@gmail.com [firebird-support]
      • ... 'Walter R. Ojeda Valiente' sistemas2000profesio...@gmail.com [firebird-support]
        • ... 'Walter R. Ojeda Valiente' sistemas2000profesio...@gmail.com [firebird-support]
      • ... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
        • ... 'Walter R. Ojeda Valiente' sistemas2000profesio...@gmail.com [firebird-support]
          • ... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
            • ... 'Walter R. Ojeda Valiente' sistemas2000profesio...@gmail.com [firebird-support]
              • ... sboyd...@gmail.com [firebird-support]

Reply via email to