Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL sai đầu ra với mệnh đề IN và tham số

Các tham số không hoạt động như vậy; họ không biết rằng những gì bạn đang cố gắng cung cấp là một danh sách các giá trị được phân tách bằng dấu phẩy. Nếu bạn đặt ParamByName('WhatEver').AsString hoặc Value , nó cho rằng bạn có nghĩa là một chuỗi được trích dẫn chứa mọi thứ thuộc về tham số đó. Vì vậy, nó đang làm chính xác những gì nó xuất hiện - nó đang truyền IN ('1, 2, 3') , thay vì IN (1, 2, 3) dự định .

Bạn sẽ cần quay lại tự phân tích cú pháp và sử dụng bảng tạm thời hoặc xây dựng WHERE động và nối mệnh đề trước khi thực hiện truy vấn. (Trên thực tế, bạn có thể tạo truy vấn động, tạo một tham số mới cho từng mục trong IN , sau đó lặp lại và gán giá trị cho từng tham số được tạo động đó, nhưng điều đó rất nhanh chóng trở nên xấu xí.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql group_concat của các khóa lặp lại và số lần lặp lại nhiều cột trong 1 truy vấn (Tối ưu hóa truy vấn)

  2. Sự khác biệt thực tế giữa `REPLACE` và` INSERT ... ON DUPLICATE KEY UPDATE` trong MySQL là gì?

  3. Kết quả N tuyệt vời nhất của MySQL với các bảng tham gia

  4. Hàm lag / dẫn đầu trong MySQL?

  5. Thay đổi bảng bằng cách sử dụng lựa chọn phụ