package sqlite3_test import ( "fmt" "log" "golang.org/x/text/collate" "golang.org/x/text/language" "github.com/ncruces/go-sqlite3" _ "github.com/ncruces/go-sqlite3/embed" ) func ExampleConn_CreateCollation() { db, err := sqlite3.Open(memory) if err != nil { log.Fatal(err) } err = db.Exec(`CREATE TABLE IF NOT EXISTS words (word VARCHAR(10))`) if err != nil { log.Fatal(err) } err = db.Exec(`INSERT INTO words (word) VALUES ('côte'), ('cote'), ('coter'), ('coté'), ('cotée'), ('côté')`) if err != nil { log.Fatal(err) } err = db.CreateCollation("french", collate.New(language.French).Compare) if err != nil { log.Fatal(err) } stmt, _, err := db.Prepare(`SELECT word FROM words ORDER BY word COLLATE french`) if err != nil { log.Fatal(err) } defer stmt.Close() for stmt.Step() { fmt.Println(stmt.ColumnText(0)) } if err := stmt.Err(); err != nil { log.Fatal(err) } err = stmt.Close() if err != nil { log.Fatal(err) } err = db.Close() if err != nil { log.Fatal(err) } // Output: // cote // coté // côte // côté // cotée // coter }