Cheers both of you, it seems this problem is indeed
linked with the "no such collation sequence: iunicode"
error as Dan mentioned.

After some research, I found out that the root of
the problem is unsurmountable at present. I quote from:
http://www.mediamonkey.com/forum/viewtopic.php?p=84197

"It's a real shame that simple queries like "select *
 from Songs where SongTitle = 'ABC'" aren't viable.
However, SQLite doesn't have good collation included,
there's absolutely no support for Unicode sorting or
case insensitive comparisons. We will try to do something
about it, but to be honest, I don't know if there's any
easy fix..."

...and...

"IUNICODE is our collation that's there in order to
support Unicode sorting - which SQLite can't do internally."

Oh well, there are one or two 'hacks' around it. The first is
to use COLLATE BINARY, or COLLATE NOCASE after the SQL query.
This appears okay on the surface, but probably ignores
unicode chars or something. It may also slow down the query (?)

The other idea is to simply use "LIKE 'xyz'" instead of
"= 'xyz'". To my limited knowledge, apart from the case
sensivity of the latter, these don't differ in the outcome,
because there are no % signs around the former statement.
Although it would be nice, I'm not too bothered about case
sensitivity for my purposes.

Which solution would you guys recommend?

Cheers, Dan



> And you are saying the statement
>
> SELECT SongTitle FROM songs WHERE SongTitle='Hexion';
>
> doesn't return any rows?

Correct. It's weird I know. I also tried with different
names in different fields (Artist etc.), and I get the
same problem. "like" is okay, but = doesn't work.

Here are the files again:
http://www.skytopia.com/stuff/MMdatabase.zip   (1.6 M)
http://www.skytopia.com/stuff/sqlite.cpp       (1k)

Dan


On Sat, 14 Jun 2008 15:54:50 +0100, Igor Tandetnik <[EMAIL PROTECTED]>  
wrote:

> "Daniel White" <[EMAIL PROTECTED]>
> wrote in message news:[EMAIL PROTECTED]
>>> Which way is it stored in the database? Show the output of this
>>> statement:
>>>
>>> SELECT SongTitle FROM songs WHERE SongTitle like 'hexion';
>>
>> There are 8 records of Hexion in the database, so after a printout
>> to the console with a carriage return after each value, I basically
>> get:
>> Hexion
>> Hexion
>> Hexion
>> Hexion
>> Hexion
>> Hexion
>> Hexion
>> Hexion
>
> And you are saying the statement
>
> SELECT SongTitle FROM songs WHERE SongTitle='Hexion';
>
> doesn't return any rows? With all due respect, I find it difficult to
> believe. Would it be possible for you to email a copy of the database
> file to me at [EMAIL PROTECTED] ? Perhaps a stripped-down version,
> with just enough data to reproduce the problem.
>
> Igor Tandetnik
>
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users



-- 
www.skytopia.com
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to