List:General Discussion« Previous MessageNext Message »
From:Eamon Daly Date:April 26 2005 2:44pm
Subject:Re: extract numeric value from a string.
View as plain text  
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" <gerald_clark@stripped>
To: "Eamon Daly" <edaly@stripped>
Cc: "dixie" <dixie@stripped>; "MySQL" <mysql@stripped>
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" <dixie@stripped>
>> To: "MySQL" <mysql@stripped>
>> 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 <dixie@stripped>
>>
>>
>>
> 

Thread
extract numeric value from a string.dixie23 Apr
  • Re: extract numeric value from a string.Eamon Daly23 Apr
    • Re: extract numeric value from a string.gerald_clark26 Apr
      • Re: extract numeric value from a string.mfatene26 Apr
        • Re: extract numeric value from a string.mfatene26 Apr
  • Re: extract numeric value from a string.Eamon Daly26 Apr