Thread

  1. extra spaces

    Andy Koch <dfunct@telus.net> — 2000-12-14T22:55:34Z

    I'm using PHP & PostgreSQL.
    
    All values called from the database are still padded with extra spaces from 
    the column size in the database. Is this normal - I don't remember this 
    happening when I was using MySQL. I thought usually the database stripped 
    the extra spaces when it retrieved the values.
    
    How do you recommend dealing with this, using a PHP command to strip every 
    value from the database - or can I change something in the database to have 
    it strip the spaces auto magic like?
    
    
    -          -          -          -          -          -          - 
      -          -          -          -
    WARNING: Some experts believe that use of any keyboard may cause
    serious injury. Consult Users Guide.
                                                                                           dfunct@telus.net
    
    
    
  2. Re: extra spaces

    alex@pilosoft.com — 2000-12-14T22:59:05Z

    Make your fields to be varchar(x), not char(x)
    
    -alex
    
    On Thu, 14 Dec 2000, Soma Interesting wrote:
    
    > I'm using PHP & PostgreSQL.
    > 
    > All values called from the database are still padded with extra spaces from 
    > the column size in the database. Is this normal - I don't remember this 
    > happening when I was using MySQL. I thought usually the database stripped 
    > the extra spaces when it retrieved the values.
    > 
    > How do you recommend dealing with this, using a PHP command to strip every 
    > value from the database - or can I change something in the database to have 
    > it strip the spaces auto magic like?
    > 
    > 
    > -          -          -          -          -          -          - 
    >   -          -          -          -
    > WARNING: Some experts believe that use of any keyboard may cause
    > serious injury. Consult Users Guide.
    >                                                                                        dfunct@telus.net
    > 
    > 
    
    
    
  3. Re: extra spaces

    Brett W. McCoy <bmccoy@chapelperilous.net> — 2000-12-14T23:18:15Z

    On Thu, 14 Dec 2000, Soma Interesting wrote:
    
    > I'm using PHP & PostgreSQL.
    >
    > All values called from the database are still padded with extra spaces from
    > the column size in the database. Is this normal - I don't remember this
    > happening when I was using MySQL. I thought usually the database stripped
    > the extra spaces when it retrieved the values.
    >
    > How do you recommend dealing with this, using a PHP command to strip every
    > value from the database - or can I change something in the database to have
    > it strip the spaces auto magic like?
    
    Sounds like you are using fixed length strings (char) rather than variable
    length strings (varchar).
    
    -- Brett
                                         http://www.chapelperilous.net/~bmccoy/
    ---------------------------------------------------------------------------
    A fool-proof method for sculpting an elephant: first, get a huge block of
    marble; then you chip away everything that doesn't look like an elephant.
    
    
    
  4. Re: [PHP-DB] extra spaces

    Miles Thompson <milesthompson@sprint.ca> — 2000-12-16T02:59:09Z

    There's probably a trim() function in your database language. Use it in your select statement.
    
    MySQL, for varchar fields, trims them automatically. Maybe it does it to char as well.
    
    Miles Thompson
    
    Soma Interesting wrote:
    
    > I'm using PHP & PostgreSQL.
    >
    > All values called from the database are still padded with extra spaces from
    > the column size in the database. Is this normal - I don't remember this
    > happening when I was using MySQL. I thought usually the database stripped
    > the extra spaces when it retrieved the values.
    >
    > How do you recommend dealing with this, using a PHP command to strip every
    > value from the database - or can I change something in the database to have
    > it strip the spaces auto magic like?
    >
    > -          -          -          -          -          -          -
    >   -          -          -          -
    > WARNING: Some experts believe that use of any keyboard may cause
    > serious injury. Consult Users Guide.
    >                                                                                        dfunct@telus.net
    >
    > --
    > PHP Database Mailing List (http://www.php.net/)
    > To unsubscribe, e-mail: php-db-unsubscribe@lists.php.net
    > For additional commands, e-mail: php-db-help@lists.php.net
    > To contact the list administrators, e-mail: php-list-admin@lists.php.net
    
    
    
    
  5. Re: extra spaces

    Roland Roberts <roland@astrofoto.org> — 2000-12-16T03:59:37Z

    >>>>> "Soma" == Soma Interesting <dfunct@telus.net> writes:
    
        Soma> All values called from the database are still padded with
        Soma> extra spaces from the column size in the database. Is this
        Soma> normal - I don't remember this happening when I was using
        Soma> MySQL. I thought usually the database stripped the extra
        Soma> spaces when it retrieved the values.
    
    I guess I missed the orginal post about the problem, but...
    
    Are your columns char() or varchar()?  The former is padded in
    PostgreSQL but not MySQL.  The latter is what you really want.
    
    roland
    -- 
    		       PGP Key ID: 66 BC 3B CD
    Roland B. Roberts, PhD                             RL Enterprises
    roland@rlenter.com                     76-15 113th Street, Apt 3B
    rbroberts@acm.org                          Forest Hills, NY 11375
    
    
  6. Re: extra spaces

    Alvaro Herrera <alvherre@protecne.cl> — 2000-12-19T13:56:58Z

    On 15 Dec 2000, Roland Roberts wrote:
    
    > >>>>> "Soma" == Soma Interesting <dfunct@telus.net> writes:
    >
    >     Soma> All values called from the database are still padded with
    >     Soma> extra spaces from the column size in the database. Is this
    >     Soma> normal - I don't remember this happening when I was using
    >     Soma> MySQL. I thought usually the database stripped the extra
    >     Soma> spaces when it retrieved the values.
    >
    > I guess I missed the orginal post about the problem, but...
    >
    > Are your columns char() or varchar()?  The former is padded in
    > PostgreSQL but not MySQL.  The latter is what you really want.
    
    According to "Postgres: Introduction and Concepts", varchar is slower
    than char. So if you (like me) want to use char and get rid of the
    padding spaces, you may use a regex replacement, as in
    
            while (@row=$result->fetchrow)
                {
                    $row[0] =~ s/[\s]+$//;
                }
    
    in perl, or
    
    $array["name"]=preg_replace("'[\s]+$'", "", $array["name"], -1);
    
    in PHP.
    
    -- 
    Alvaro Herrera (<alvherre[@]protecne.cl>)
    
    
    
  7. Re: extra spaces

    Mark Cowlishaw <markc@ot.com.au> — 2000-12-19T23:35:01Z

    > >     Soma> All values called from the database are still padded with
    > >     Soma> extra spaces from the column size in the database. Is this
    > >     Soma> normal - I don't remember this happening when I was using
    > >     Soma> MySQL. I thought usually the database stripped the extra
    > >     Soma> spaces when it retrieved the values.
    
    >
    > According to "Postgres: Introduction and Concepts", varchar is slower
    > than char. So if you (like me) want to use char and get rid of the
    > padding spaces, you may use a regex replacement, as in
    >
    >         while (@row=$result->fetchrow)
    >             {
    >                 $row[0] =~ s/[\s]+$//;
    >             }
    >
    > in perl, or
    >
    > $array["name"]=preg_replace("'[\s]+$'", "", $array["name"], -1);
    >
    > in PHP.
    >
    
    I'm new to the list so I'm not sure if this has already been said, but Perl
    DBI has an option to trim trailing spaces in the connect statement. eg:
    
    
    my $dbh = DBI->connect("dbi:Pg:dbname=mydb",
        'myuser','mypass',
        {RaiseError => 1, AutoCommit => 0, ChopBlanks => 1})
        or die $DBI::errstr;
    
    Cheers
    
    
    
  8. Re: extra spaces

    Tom Lane <tgl@sss.pgh.pa.us> — 2000-12-20T06:47:17Z

    Alvaro Herrera <alvherre@protecne.cl> writes:
    > According to "Postgres: Introduction and Concepts", varchar is slower
    > than char. So if you (like me) want to use char and get rid of the
    > padding spaces, you may use a regex replacement, as in
    
    >         while (@row=$result->fetchrow)
    >             {
    >                 $row[0] =~ s/[\s]+$//;
    >             }
    
    I can confidently assure you that the performance differential between
    char and varchar is small enough to be swamped out by invocation of
    functions like the above.  (Besides, it's gone entirely for PG 7.1.)
    
    And that's just based on pure CPU-time considerations, without regard
    for disk-transfer-time and cache-space-wastage issues.  Padding
    spaces can easily cost you FAR more along those dimensions than you
    can ever hope to save from having a fixed tuple layout.
    
    IMHO, 'char(n)' is suitable for extremely small values of n where
    you *know* that space-padding is not the normal case.  Almost the
    only natural example I can think of is two-letter USA postal
    abbreviations for states (such as PA in my address).  Otherwise
    use 'varchar(n)' if your application has a natural upper bound on
    sensible string lengths, or 'text' if you can't instantly pick a
    specific value of the upper limit 'n'.
    
    			regards, tom lane
    
    
  9. Re: Re: extra spaces

    Denis A. Doroshenko <d.doroshenko@omnitel.net> — 2000-12-20T08:01:05Z

    On Wed, Dec 20, 2000 at 10:35:01AM +1100, Mark Cowlishaw wrote:
    > > According to "Postgres: Introduction and Concepts", varchar is slower
    > > than char. So if you (like me) want to use char and get rid of the
    > > padding spaces, you may use a regex replacement, as in
    > >
    > >         while (@row=$result->fetchrow)
    > >             {
    > >                 $row[0] =~ s/[\s]+$//;
    > >             }
    > >
    > > in perl, or
    > >
    > > $array["name"]=preg_replace("'[\s]+$'", "", $array["name"], -1);
    > >
    > > in PHP.
    
    i guess it would be better to use chop() (for trailing whitespaces) or
    even trim() (strips whitespaces off begining as well)... it should be
    considerably more effective then any regex...
    
    -- 
    Denis A. Doroshenko -- VAS/IN group engineer           .-.        _|_  |
    [Omnitel Ltd., T.Sevcenkos st. 25, Vilnius, Lithuania] | | _ _  _ .| _ |
    [Phone: +370 9863207 E-mail: d.doroshenko@omnitel.net] |_|| | || |||(/_|_