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

Làm cách nào để xử lý dấu ngoặc kép 'trong SQL

Ký tự thoát là ', vì vậy bạn sẽ cần thay thế dấu ngoặc kép bằng hai dấu ngoặc kép.

Ví dụ:

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'

trở thành

SELECT * FROM PEOPLE WHERE SURNAME='O''Keefe'

Điều đó nói rằng, nó có thể là không chính xác để tự mình làm điều này. Ngôn ngữ của bạn có thể có chức năng thoát chuỗi để sử dụng trong SQL, nhưng một tùy chọn tốt hơn nữa là sử dụng các tham số. Thông thường điều này hoạt động như sau.

Lệnh SQL của bạn sẽ là:

SELECT * FROM PEOPLE WHERE SURNAME=?

Sau đó, khi bạn thực thi nó, bạn chuyển vào "O'Keefe" dưới dạng tham số.

Bởi vì SQL được phân tích cú pháp trước khi giá trị tham số được đặt, không có cách nào để giá trị tham số thay đổi cấu trúc của SQL (và nó thậm chí còn nhanh hơn một chút nếu bạn muốn chạy cùng một câu lệnh nhiều lần với các tham số khác nhau).

Tôi cũng nên chỉ ra rằng, trong khi ví dụ của bạn chỉ gây ra lỗi, bạn tự mở ra rất nhiều vấn đề khác bằng cách không thoát các chuỗi một cách thích hợp. Xem http://en.wikipedia.org/wiki/SQL_injection để có một điểm khởi đầu tốt hoặc truyện tranh xkcd cổ điển sau đây .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để truy xuất tất cả các con đệ quy của hàng cha trong Oracle SQL?

  2. cách khôi phục cơ sở dữ liệu dự phòng từ nhật ký lưu trữ bị thiếu

  3. Phương pháp tốt nhất để luôn nhận được 2 chữ số thập phân trong Oracle là gì?

  4. Oracle nhóm một phần của hàng và nhận hàng với dấu thời gian mới nhất

  5. Lỗi IO:Đã hết thời gian đọc Socket. Những lý do là gì?