Good point. I assumed that number meant a real number. This
should work for leading zeroes:

SELECT
tag,
@num := CONVERT(tag, SIGNED) AS cast_num,
SUBSTRING(tag, 1, LOCATE(@num, tag) + LENGTH(@num) - 1) AS num_part,
SUBSTRING(tag, LOCATE(@num, tag) + LENGTH(@num)) AS txt_part
FROM tags;

+---------+----------+----------+----------+
| tag     | cast_num | num_part | txt_part |
+---------+----------+----------+----------+
| 1foo    |        1 | 1        | foo      |
| 23bar   |       23 | 23       | bar      |
| 234baz  |      234 | 234      | baz      |
| 001quux |        1 | 001      | quux     |
+---------+----------+----------+----------+

Same concept, but the LOCATE finds the first occurrence of
the casted number. Then add the length of the casted number
et voila.

____________________________________________________________
Eamon Daly



----- Original Message ----- From: "gerald_clark" <[EMAIL PROTECTED]>
To: "Eamon Daly" <[EMAIL PROTECTED]>
Cc: "dixie" <[EMAIL PROTECTED]>; "MySQL" <mysql@lists.mysql.com>
Sent: Tuesday, April 26, 2005 8:10 AM
Subject: Re: extract numeric value from a string.



Eamon Daly wrote:

Easy enough. Get the numeric part via CONVERT, then get the
rest of the string from the length of the numeric part, plus
one:

SELECT
tag,
@num := CONVERT(tag, SIGNED) AS num_part,
SUBSTRING(tag, LENGTH(@num) + 1) AS rest_of_string from tags;
+--------+----------+----------------+
| tag    | num_part | rest_of_string |
+--------+----------+----------------+
| 1foo   |        1 | foo            |
| 23bar  |       23 | bar            |
| 234baz |      234 | baz            |
+--------+----------+----------------+
3 rows in set (0.00 sec)

____________________________________________________________
Eamon Daly

Unless the string starts wit a '0'.




----- Original Message ----- From: "dixie" <[EMAIL PROTECTED]> To: "MySQL" <mysql@lists.mysql.com> Sent: Friday, April 22, 2005 6:18 PM Subject: extract numeric value from a string.


Hi at all, I've this necessity.
In a table I've a field popolated by a string where the first (not
costant lenght) part are number and the second part caracter.
I want extract, in other field, the first part and the second in another
field.
There is a function to obtained it?

Tks in advance

Paolo
--
dixie <[EMAIL PROTECTED]>






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



Reply via email to