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

làm thế nào để chuyển một biến trong mệnh đề WHERE IN của oracle sql?

Như Pavanred đã ám chỉ, cách dễ nhất - mặc dù không nhất thiết là tốt nhất - là tự mình nội suy các giá trị. Bạn không nói ngôn ngữ gọi của mình là gì, nhưng đại loại như:

sql = "SELECT something FROM whatever WHERE myColumn in (" + $1 + ")"

Tuy nhiên, điều này có nghĩa là bạn phải kiểm tra trước tất cả các giá trị trong $ 1 để đảm bảo rằng chúng là số hoặc chuỗi ký tự thoát đúng cách hoặc bất kỳ điều gì khác mà bạn cần chuyển nhưng không thể là giá trị thô được cung cấp bởi người dùng, để tránh bị chèn SQL.

Tùy chọn khác là biến nó thành một quy trình gồm hai bước. Đầu tiên, hãy chèn các giá trị từ $ 1 vào một bảng tạm thời, sau đó chọn các giá trị đó làm truy vấn con:

WHERE myColumn in (SELECT temp_value FROM temp_table)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa các hàng trùng lặp khỏi bảng trong Oracle

  2. Tại sao ORACLE không cho phép các ký tự dòng mới liên tiếp trong các lệnh?

  3. Có biểu thức CASE như vậy trong JPQL không?

  4. Tác động của việc xác định cột VARCHAR2 có độ dài lớn hơn

  5. PreparedStatement và setTimestamp trong oracle jdbc