Re: Sorting MySQL queries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



# dotancohen@xxxxxxxxx / 2006-11-05 15:13:19 +0200:
> I have a list of subjects, such as "Linux", "Open Source", and "the
> World Wide Web". The subjects are stored in a database and being
> retrieved via php. I currently organize them alphabetically with SQL's
> ORDER BY ASC argument, however, if there is a preceding "the " or "a "
> then that is considered as part of the alphabetical order. Thus, all
> the subjects starting with "the " are grouped together, as are the
> subjects starting with "a ". How can I order by ascending, without
> taking the preceding "the " or "a " into account?

> Current code:
> $query  = "SELECT subject FROM table ORDER BY subject asc";
> $result = mysql_query($query);

    If you used PostgreSQL I'd suggest a functional index and ordering
    on the function... Does MySQL have anything like this?

    CREATE FUNCTION fn(TEXT)
    RETURNS TEXT
    IMMUTABLE STRICT
    LANGUAGE SQL
    AS $$
      SELECT regexp_replace($1, '^(?:(?:a|the)[[:space:]]+)', '', 'i');
    $$;

    CREATE INDEX ON table(fn(subject));

    SELECT subject FROM table ORDER BY fn(subject) ASC;

-- 
How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE.             http://bash.org/?255991

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux