Verwenden Sie die LIKE-Klausel mit golang x SQLite3

Einführung

Ich habe ein oder zwei Wochen lang die Grundlagen der Go-Sprache gelernt und eine einfache Webanwendung mit CRUD-Funktion erstellt. Ich konnte keinen Artikel finden, der zu einer Lösung führen würde, selbst wenn ich durch den Betrieb der Datenbank gestolpert wäre (LIKE-Klausel). Ich habe beschlossen, diesen Artikel zu schreiben.

https://qiita.com/init/items/2edfc7acf11234e5b1aa Die grundlegenden Datenbankoperationen werden im obigen Artikel beschrieben. Ich schreibe zum ersten Mal einen Qiita-Artikel, daher schreibe ich vorerst nur über die LIKE-Klausel, auf die ich gestoßen bin.

Umgebung

Version: go 1.15.3

db:SQLite3

PC:Mac

Vorbereitungen

Installation von golang, SQLite3, go-sqlite3

Tabellenerstellung und Inhalt

Erstellen Sie zunächst eine Tabelle

package main

import (
	"database/sql"
	_ "github.com/mattn/go-sqlite3"
	"log"
)

var DbConnection *sql.DB

type Uset struct {
	Id   int
	Name string
	Age  int
}

func main() {
	DbConnection, err := sql.Open("sqlite3", "../example.sql")
	if err != nil {
		log.Fatalln(err)
	}
	defer DbConnection.Close()
	
	cmd := `CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY,
	name STRING,
	age INT)`
	_, err = DbConnection.Exec(cmd)
	if err != nil {
		log.Fatalln(err)
	}
}

Ergebnis
$ sqlite3 example.sql
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite> .table
user
sqlite> 
Inhalt der Daten
sqlite> select * from user;
1|yamada|20
2|yamamoto|22
3|suzuki|19
4|tanaka|15
5|miyamoto|30
sqlite> 

Ich habe 5 Platten gelegt. Von links ID-Alter

LIKE-Klausel

Code, der funktioniert hat

cmd := "SELECT * FROM user WHERE name LIKE ?"
rows, err := Dbconnection.Query(cmd, "%yamada%")
if err != nil {
	log.Println(err)
}
defer rows.Close()
var users []User
for rows.Next() {
	var user User
	err = rows.Scan(&user.Id, &m.Name, &m.Age)
	if err != nil {
		log.Println(err)
	}
users = append(users, user)

fmt.Println(users)
Ergebnis
$ go run main.go
[{1 yamada 20}]

#### Code, der nicht funktioniert hat ``` cmd := "SELECT * FROM user WHERE name LIKE '%?%'" //← hier rows, err := DbConnection.Query(cmd, "yamada")

//Ergebnis go run main.go []

 Ich übergebe einen Wert an das "?"
 Anstatt es zuerst in "%%" einzuschließen, musste ich den Wert zusammen mit "%" wie ""% yamada% "" übergeben.
 Ich habe einen Artikel über die LIKE-Klausel von Python x SQLite gefunden und als Referenz verwendet.
<br>
 An Terminals etc.

sqlite> select * from user where name like '%yamada%'; 1|yamada|20


 Ich kann gehen.
#### Ganzzahlen können dasselbe tun

cmd := "SELECT * FROM user WHERE age LIKE ?" rows, err := DbConnection.Query(cmd, "%1%")

//Ergebnis [{3 suzuki 19} {4 tanaka 15}]

## Andere Nutzungsmuster

#### Beim Abrufen von Datensätzen, die mit einer beliebigen Zeichenfolge beginnen

cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "y%")

//Ergebnis [{1 yamada 20} {2 yamamoto 22}]


#### Holen Sie sich Daten, bei denen "m" zweimal kommt

cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "%m%m%")

//Ergebnis [{2 yamamoto 22} {5 miyamoto 30}]


#### Daten mit Spalten beliebiger Länge abrufen (6 Zeichen im Beispiel)

cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "______")

//Ergebnis [{1 yamada 20} {3 suzuki 19} {4 tanaka 15}]


## Schließlich
 Ich weiß nicht, ob jemand auf die gleiche Weise stolpern wird, aber ich hoffe, es hilft jemandem. (Ich wollte die Details des Codes schreiben, aber es tut mir leid, dass es lange gedauert hat, weil ich neu darin bin.)
 Als ich tatsächlich eine einfache App erstellte, stellte ich fest, dass Golang nicht so informativ ist wie Rails.
 In Zukunft möchte ich einen Artikel darüber schreiben, was mir beim Lernen von Golang aufgefallen ist.
 Danke, dass du bis zum Ende zugesehen hast.








Recommended Posts

Verwenden Sie die LIKE-Klausel mit golang x SQLite3
Verwendung der Exist-Klausel in Django Queryset
Verwendung von SQLite in Python
Verwenden Sie die in Sphinx-2.4 entwickelten Typfunktionen
Fehler bei bereits verwendeter Adresse beheben
Verwenden Sie den Befehl, den Sie zuvor in IDLE eingegeben haben
Verwendung der C-Bibliothek in Python
Verwenden Sie den neuesten Pip in einer virtuellen Umgebung
Ruft den Fenstertitel des X-Fenstersystems in Python ab
[Algorithmus x Python] Verwendung der Liste
Verwenden Sie die LibreOffice-App in Python (3) Bibliothek hinzufügen
Loggen Sie sich mit json mit pygogo ein.
Fügen Sie mit SQLite3 nur zwei Zeilen hinzu und verwenden Sie die Erweiterungsbibliothek (erweiterte SQL-Funktion)!
SQLite in Python
Laden Sie Dateien herunter, während Sie den Fortschritt in Python 3.x anzeigen
Linux ist in erster Linie so etwas
Verwenden Sie Cursur, das in Python automatisch mit sqlite3 geschlossen wird
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
[Golang] Geben Sie ein Array für den Wert der Karte an
Verwenden wir die offenen Daten von "Mamebus" in Python
Verwendung des in Lobe in Python erlernten Modells
Ich möchte R-Datensatz mit Python verwenden
Ich kann den Darknet-Befehl in Google Colaboratory nicht verwenden!