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!