You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sqlite3 - by default - sort data using ASCII codes - and that's ok if you are using English language.
But for other languages (ie.: Polish) that's not good.
But - you have SetCollaction you can use unicode defualt collation from golang.org/x/text/language package.
Of course you can use particular language as well - but defualt collaction will sort most of utf8 strings right.
I'd like to suggest to add this (or simillar) as example to SetCollaction function & maybe mention it in README.
That's something that is not obvious for developers - i think...
package main
import (
"fmt"
"golang.org/x/text/collate"
"golang.org/x/text/language"
"zombiezen.com/go/sqlite"
"zombiezen.com/go/sqlite/sqlitex"
)
func main() {
conn, err := sqlite.OpenConn(":memory:", sqlite.OpenReadWrite)
if err != nil {
panic(err)
}
defer conn.Close()
// use general unicode sort, not language specific
c := collate.New(language.Und, collate.IgnoreCase)
conn.SetCollation("NOCASE", c.CompareString)
// setup table
sqlitex.ExecuteScript(conn, `
-- sort name using NOCASE collation
CREATE TABLE test (name TEXT COLLATE NOCASE);
-- insert unsorted data
INSERT INTO test (name) VALUES ('atext'), ('btext'), ('ctext'), ('ątext'), ('ćtext');
`, nil)
stmt := conn.Prep("SELECT n FROM t ORDER BY n ASC")
defer stmt.Finalize()
for {
hasRow, err := stmt.Step()
if err != nil {
panic(err)
}
if !hasRow {
break
}
t := stmt.ColumnText(0)
fmt.Println(t)
}
// should print: atext ątext btext ctext ćtext
}
The text was updated successfully, but these errors were encountered:
Hi!
Sqlite3 - by default - sort data using ASCII codes - and that's ok if you are using English language.
But for other languages (ie.: Polish) that's not good.
But - you have SetCollaction you can use unicode defualt collation from golang.org/x/text/language package.
Of course you can use particular language as well - but defualt collaction will sort most of utf8 strings right.
I'd like to suggest to add this (or simillar) as example to SetCollaction function & maybe mention it in README.
That's something that is not obvious for developers - i think...
The text was updated successfully, but these errors were encountered: