Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menggunakan Pertanyaan LIKE dengan betul dengan Pemacu pq Go dan PostgreSQL?

Bagaimana untuk Menggunakan Pertanyaan LIKE dengan betul dengan Pemacu pq Go dan PostgreSQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-12 10:49:18591semak imbas

How to Correctly Use LIKE Queries with Go's pq Driver and PostgreSQL?

Go PostgreSQL LIKE Query Syntax

Apabila bekerja dengan PostgreSQL dan pemacu pq Go, anda mungkin menghadapi mesej ralat berkenaan sintaks semasa melaksanakan pertanyaan LIKE. Mari kita terokai isu ini dan berikan penyelesaian.

Pertanyaan dalam kod yang disediakan ialah:

SELECT p.id, p.name, p.description, p.price, p.image, p.rate
FROM products AS p
WHERE LOWER(p.name) LIKE %% ORDER BY p.rate DESC

Melaksanakan pertanyaan ini secara langsung dalam PostgreSQL berfungsi, tetapi dalam Go, ia menimbulkan ralat:

pq: ralat sintaks pada atau berhampiran "%"

Isunya terletak pada sintaks yang salah untuk operator LIKE. Pemegang tempat hendaklah disertakan dalam petikan tunggal:

SELECT p.id, p.name, p.description, p.price, p.image, p.rate
FROM products AS p
WHERE LOWER(p.name) LIKE '%' ||  || '%'
ORDER BY p.rate DESC

Menggunakan petikan tunggal memastikan pemegang tempat dianggap sebagai rentetan literal dan bukannya sebahagian daripada pertanyaan itu sendiri.

Untuk mengelakkan isu sintaks selanjutnya , pertimbangkan untuk menggunakan ruang letak bernama dan bukannya pemegang tempat kedudukan:

query := `SELECT p.id, p.name, p.description, p.price, p.image, p.rate
        FROM products AS p
        WHERE LOWER(p.name) LIKE '%' || :name || '%'
        ORDER BY p.rate DESC`

product_rows, err := db.Query(query, map[string]interface{}{"name": name})

Menggunakan ruang letak bernama meningkatkan kebolehbacaan kod dan mengurangkan risiko ralat sintaks.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Pertanyaan LIKE dengan betul dengan Pemacu pq Go dan PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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