"C.R.Vegelin" <[EMAIL PROTECTED]> wrote:
>
> Hi everybody,
> I looked for a function to test whether a string is numeric (having
> characters 0..9 only). I found in the 5.0 manual Cast() and Convert(), but
> I don't think these do what I need. Any suggestion what function to use ?
> Thanks in advance, Cor

Gleb Paharenko wrote:
Hello.

Possible solution is to use REGEXP:

  mysql> select '911' regexp '^[1-9]*$';
        +-------------------------+
        | '911' regexp '^[1-9]*$' |
        +-------------------------+
        |                       1 |
        +-------------------------+

        mysql> select '91a1' regexp '^[1-9]*$';
        +--------------------------+
        | '91a1' regexp '^[1-9]*$' |
        +--------------------------+
        |                        0 |
        +--------------------------+

This is close, but not quite what you want, I think. The problem is that this will also match empty strings:

  mysql> SELECT '' REGEXP '^[1-9]*$';
  +----------------------+
  | '' REGEXP '^[1-9]*$' |
  +----------------------+
  |                    1 |
  +----------------------+
  1 row in set (0.00 sec)

That's easily fixed, though.  Just change the * to a +.

  mysql> SELECT '' REGEXP '^[1-9]+$';
  +----------------------+
  | '' REGEXP '^[1-9]+$' |
  +----------------------+
  |                    0 |
  +----------------------+
  1 row in set (0.00 sec)

Michael

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to