fanticla has asked for the wisdom of the Perl Monks concerning the following question:

Dear folk

I am trying to learn how to use collation in DBD::SQLite... unfortunately withou success.

I have read the documentation, and I came up with the following:

#!/usr/bin/perl -w use warnings; use strict; use DBD::SQLite; $DBD::SQLite::COLLATION{no_accents} = sub { my ( $a, $b ) = map lc, @_; tr[ÀÁÂÃÄÅàáâãäåÇçÈÉÊËèéêëÌÍÎÏìíîïÒÓÔÕÖØòóôõöøÑñÙÚÛÜùúûüÝÿý] [AAAAAAaaaaaaCcEEEEeeeeIIIIiiiiOOOOOOooooooNnUUUUuuuuYyy] for $a +, $b; $a cmp $b; }; my $dbh = DBI->connect("dbi:SQLite:data.db"); my $sql = ("SELECT ID, one, two FROM table WHERE one = 'value' ORDE +R BY one COLLATE no_accents"); my $rows = $dbh->selectall_arrayref($sql); foreach my $row_db (@$rows ) { my ($ID, $one, $two) = @$row_db; print "$one\n"; }

I get an errore message: no such collation sequence. Waht am I doing wrong? I confess, I am a newbe in this. Thanks, Cla

Replies are listed 'Best First'.
Re: DBD::SQLite collation
by moritz (Cardinal) on Dec 04, 2010 at 15:53 UTC

      Hallo Moritz, I am trying to create a new one with $DBD::SQLite::COLLATION{no_accents} ....

        You are right, I answered in haste. Sorry about that.

        Two things come to mind: the first is that you might have an older version of DBD::SQLite installed which doesn't support that feature.

        The second is to try it with the $dbh->sqlite_create_collation function instead f assigning into the %COLLATION hash.