Thread: Re: [SQL] SELECT... BETWEEN 'P' and 'Z'

Re: [SQL] SELECT... BETWEEN 'P' and 'Z'

From
"Tim Perdue, The Des Moines City.net"
Date:
What I did was make the Z lowercase, since lowercase Z would be a bigger
number in the ASCII character set.

So now I'm doing "where x between 'P' and 'z';"

and I get everything that I want.

--Tim




-----Original Message-----
From: Bruce Momjian <maillist@candle.pha.pa.us>
To: tim@dmcity.net <tim@dmcity.net>
Cc: pgsql-sql@hub.org <pgsql-sql@hub.org>
Date: Saturday, January 09, 1999 7:48 PM
Subject: Re: [SQL] SELECT... BETWEEN 'P' and 'Z'
>
>Tried it here:
>
> test=> create table test5(x char(50));
> CREATE
> test=> insert into test5 values ('P');
> INSERT 18665 1
> test=> insert into test5 values ('Z');
> INSERT 18666 1
> test=> insert into test5 values ('S');
> INSERT 18667 1
> test=> select * from test5 where x between 'P' and 'Z';
> x
> --------------------------------------------------
> P
> Z
> S
> (3 rows)
>
>This is the 6.5 development tree, but should be the same on 6.4.*.
>
>--
>  Bruce Momjian                        |  http://www.op.net/~candle
>  maillist@candle.pha.pa.us            |  (610) 853-3000
>  +  If your life is a hard drive,     |  830 Blythe Avenue
>  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026


Re: [SQL] SELECT... BETWEEN 'P' and 'Z'

From
Bruce Momjian
Date:
[Charset iso-8859-1 unsupported, filtering to ASCII...]
> What I did was make the Z lowercase, since lowercase Z would be a bigger
> number in the ASCII character set.
>
> So now I'm doing "where x between 'P' and 'z';"
>
> and I get everything that I want.
>

I think I know your problem.  Look at this:

    test=> create table test5 (x varchar(5));
    CREATE
    test=> insert into test5 values ('Z ');
    INSERT 18698 1
    test=> insert into test5 values ('P');
    INSERT 18699 1
    test=> insert into test5 values ('S');
    INSERT 18700 1
    test=> insert into test5 values ('Z');
    INSERT 18701 1
    test=> select * from test5 where x between 'P' and 'Z';
    x
    -
    P
    S
    Z
    (3 rows)

Notice in a varchar field, spaces are significant.  This is not true in char(5)
field, so 'Z ' is not between 'P' and 'Z'.  We can change this, but I
think this the way it is supposed to work.  Using < and > yields the
same result.



--
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026