Rumah >pembangunan bahagian belakang >Golang >Pertanyaan SQL golang GORM menjalankan carian tidak sensitif huruf besar tidak berfungsi
Saya ingin melakukan carian tidak sensitif huruf di Golang. Saya menggunakan perpustakaan ini.
Saya telah mencuba yang berikut tetapi tidak berkesan.
someId = "abc" model := abcModel{Id: someId} result := p.db.Where("lower(id) = lower(?)", someId).Take(&model)
<code> Id is primary-key here </code>
Saya pun mencubanya
db.Where("LOWER(id) LIKE LOWER(?)", fmt.Sprintf("%%%s%%", someId)).Take(&model)
Ada sesiapa boleh tolong? Tidak pasti apa yang salah. Sebarang petunjuk akan amat dihargai.
Terima kasih!
Diedit:
Ini yang saya ada dalam pangkalan data
id | created_at | updated_at | deleted_at | client_id | ttl | client_type | token | expires_on --------------------------------------+-------------------------------+-------------------------------+------------+--------------------------------------+------+--------------------------------------+ ABC | 2023-10-30 16:10:59.614132+00 | 2023-10-30 16:10:59.614132+00 | | ae30e377 | 100 | 7da0e618-7393-45c2-94dc-5e7b1d6c1610 | abc | 2023-10-30 16:27:39.613566+00
Saya menjangkakan pertanyaan di atas akan mengembalikan rekod ini dalam pangkalan data kerana ia adalah carian yang tidak sensitif huruf.
Ralat yang saya terima ialah record not found
https://gorm.io/docs/error_handling.html#ErrRecordNotFound
Saya menjalankan pelayan Postgres dalam bekas Docker. https://hub.docker.com/_/postgres
belum jelas p
代表什么,但这里有一个使用 Take()
和 Where().Take()
Contoh yang berfungsi:
func main() { // open connection to postgres db, err := gorm.Open(postgres.New(...), &gorm.Config{}) if err != nil { panic("failed to connect database") } // Get the row someId := "abc" var result abcModel db.Take(&result, "lower(id) = lower(?)", someId) // Print the row fmt.Println(result) // Find the row using Where var result2 abcModel db.Where("lower(id) = lower(?)", someId).Take(&result2) // Print the row fmt.Println(result2) }
Keluaran:
$ go run . {ABC 2023-10-30 10:00:57.774905 -0700 PDT 2023-10-30 10:00:57.774905 -0700 PDT <nil> ae30e377 100 7da0e618-7393-45c2-94dc-5e7b1d6c1610 abc 2023-10-30 10:00:57.774906 -0700 PDT} {ABC 2023-10-30 10:00:57.774905 -0700 PDT 2023-10-30 10:00:57.774905 -0700 PDT <nil> ae30e377 100 7da0e618-7393-45c2-94dc-5e7b1d6c1610 abc 2023-10-30 10:00:57.774906 -0700 PDT}
Jadi kod asal anda nampaknya berfungsi, cuma ralat anda mungkin berkaitan dengan cara p
ditakrifkan
Atas ialah kandungan terperinci Pertanyaan SQL golang GORM menjalankan carian tidak sensitif huruf besar tidak berfungsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!