not to forget that there can also be street adresses like foobarstreet 23-25
or foobarstreet 17b and so on ... so i
guess i'll have to split my addresses into 2 fields from now on (street and
number). anyway thanks for ideas and
replies! best: lars

On 7/27/07, Joerg Bruehe <[EMAIL PROTECTED]> wrote:
>
> Hi Brent, Lars, all !
>
>
> While I cannot offer a solution, I still know the "replace()" approach
> is incorrect:
>
> Brent Baisley wrote:
> > The only regular expression MySQL support return a true/false if the
> > expression was found. I had to do something similar to what you want to
> > do. Although I needed to count how many digits there were.
> > You can use the REPLACE() function to strip out the numbers. Of course,
> > this means you need to do 10 replaces, 1 for each number.
> >
> > You can just nest them altogether like so:
> > SELECT REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
> > REPLACE(field, 1, ''), 2, ''), 3, '', 4,'', ... ) AS NoNums
> >
> > It's ugly, but it will get the job done.
>
> No, it will do more than desired (if the data are arbitrary German
> addresses):
>
> - There are streets that have digits in their name, just two examples
>    from Berlin:
>       Straße des 17. Juni
>       Platz des 4. Juli
>
> - There are streets that have no name but just a number, especially in
>    areas developed for building only very recently:
>       Straße 217
>
> Applying your "replace()" command to such streets will modify the street
> name in addition to removing the number of the house.
>
>
> >                                    If you are post processing the
> > data on the front end, it may be quicker and certainly easier to do it
> > there.
>
> Agree - see below.
>
> >
> >
> > On Jul 26, 2007, at 7:40 AM, Lars Schwarz wrote:
> >
> >> hi all, is there any shorthand to extract the string part of a varchar
> >> field
> >> only?
> >> like when having german street addresses (e.g. foostreet 23) in a
> varchar
> >> field
> >> and i want to select the non-numeric part of it (foostreet) only?
>
> I fear there is no general solution to this, even if you had all kinds
> of regular expressions available (say, pattern handling in Perl) -
> unless you have very strict assumptions about the input addresses:
>
> *If* you can rely on the format
>    (street name, maybe including digits and blanks) (blank) (digits)
> then a suitable regular expression could strip the final string of
> digits and the blank(s) directly preceding it, like this Perl line:
>    $address ~= s/^(.+) +\d+$/$1/ ;   # untested
>
> However, I am not aware of any SQL function supporting that.
> Also beware that in case of a missing (house) number in a numbered
> street this approach will ruin your data.
>
> Most likely, you should do that in an application, with the additional
> advantage that this would allow you to do a test run and report doubtful
> cases before really modifying valid data.
>
>
> Sorry,
> Joerg
>
> --
> Joerg Bruehe, Senior Production Engineer
> MySQL AB, www.mysql.com
>
>
>


-- 
Lars Schwarz
Gottorpstrasse 20
26122 Oldenburg
T 0441 2171 354 0
F 0441 2171 354 0
M 0179 512 4628

Reply via email to