mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 14:09:13 +00:00
65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
|
|
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
|
||
|
|
}
|