Pertanyaan SQL golang GORM menjalankan carian tidak sensitif huruf besar tidak berfungsi

PHPz
Lepaskan: 2024-02-05 22:03:08
ke hadapan
977 orang telah melayarinya

GORM golang SQL 查询执行不区分大小写的搜索不起作用

Kandungan soalan

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)
Salin selepas log masuk
<code>
Id is primary-key here
</code>
Salin selepas log masuk

Saya pun mencubanya

db.Where("LOWER(id) LIKE LOWER(?)", fmt.Sprintf("%%%s%%", someId)).Take(&model)
Salin selepas log masuk

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
Salin selepas log masuk

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


Jawapan yang betul


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)

}
Salin selepas log masuk

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}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan