Thanks Clemens. You’re right about changing the UTF8String* to char* as it now 
works but when trying it with a column containing Unicode characters it didn’t. 
I’d have liked to have tried it with windows wchar_t* type but If I try using



         if (sqlite3_create_collation16(SQLiteDB, "Compare", SQLITE_UTF16, 
NULL, &Compare) != SQLITE_OK)

                 throw Exception("Collation creation error");



I get the message “no such collation sequence: Compare” when running the query.







From: Clemens Ladisch<mailto:clem...@ladisch.de>
Sent: 01 February 2017 17:32
To: 
sqlite-users@mailinglists.sqlite.org<mailto:sqlite-users@mailinglists.sqlite.org>
Subject: Re: [sqlite] Help with custom collation



x wrote:
> int Compare(void* Data, int Len1, const void *s1, int Len2, const void *s2)
> {
>         const UTF8String *S1 = static_cast<const UTF8String*>(s1),
>         *S2 = static_cast<const UTF8String*>(s2);
>         return 0;
> }
>
>         if (sqlite3_create_collation(SQLiteDB, "Compare", SQLITE_UTF8, NULL, 
> &Compare) != SQLITE_OK)
>                 throw Exception("Collation creation error");
>
> S1 and S2 appear to point to NULL values.

What is "UTF8String"?  If it is anything different from "char", the code is 
wrong.

> If I change the select to ‘select ID from IDTbl order by ID collate Compare’ 
> the Compare function is never entered.
> Is this because ID is an integer column?

No, it is because the values in that column are integer values.

> Is there no way to implement a custom collation on an integer column?

There is no way to implement a custom collation for integer values.
Collations are used only for string values.


Regards,
Clemens
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to