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

Tạo các truy vấn SQL động cho MySQL DB

Nếu bạn có một bản đồ với các tên và giá trị trường như thế này:

m := map[string]interface{}{"UserID": 1234, "Age": 18}

thì bạn có thể tạo truy vấn như sau:

var values []interface{}
var where []string
for _, k := range []string{"userId", "gender", "age", "name", "height", "weight", "ethnicity"} {
    if v, ok := m[k]; ok {
        values = append(values, v)
        where = append(where, fmt.Sprintf("%s = ?", k))
    }
}
r, err := db.QueryRow("SELECT name FROM users WHERE " + strings.Join(where, " AND "), values...)

Điều này không dễ bị chèn SQL vì trình giữ chỗ được sử dụng cho các phần của truy vấn nằm ngoài sự kiểm soát trực tiếp của ứng dụng.

Nếu các khóa bản đồ được biết là tên trường được phép, thì hãy sử dụng điều này:

var values []interface{}
var where []string
for k, v := range m {
    values = append(values, v)
    where = append(where, fmt.Sprintf("%s = ?", k))
}
r, err := db.QueryRow("SELECT name FROM users WHERE " + strings.Join(where, " AND "), values...)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. điểm truy vấn mysql trong đa giác - không có kết quả

  2. Chọn các hàng ngẫu nhiên trong mysql và giới hạn trong mỗi nhóm

  3. Cách hoạt động của hàm EXPORT_SET () trong MySQL

  4. Cấu trúc truy vấn để tạo bảng

  5. Tạo bảng INFORMATION_SCHEMA cho cơ sở dữ liệu MySQL