2012-01-06 93 views
7

Có cách nào dễ dàng trong Oracle để thoát khỏi các ký tự đặc biệt trong câu lệnh SQL không? (ví dụ:%, &, ') Tôi thấy số này link liên quan đến các ký tự thoát bằng tay, nhưng tôi nghĩ rằng Oracle có thể đã cung cấp một cách dễ dàng hơn để làm như vậy.Thoát các ký tự đặc biệt trong SQL

Lưu ý: Tôi đang tạo các câu lệnh chọn SQL động thông qua ORM.

+0

Điều duy nhất cần "thoát" là trích dẫn đơn trong ký tự chữ. Không ai trong số những người khác bạn đề cập đến là "ký tự đặc biệt" cần thoát. –

+1

@a_horse_with_no_name Trên thực tế phần trăm và dấu gạch dưới là các ký tự đặc biệt khi sử dụng mệnh đề WHERE .. LIKE. – RuntimeException

Trả lời

16

Nếu sử dụng các biến ràng buộc và ORM, dấu nháy đơn nhúng và ampersands nên được trao tự động; đó là các ký tự đặc biệt trong SQL * Plus hoặc SQL * Developer.

Để sử dụng LIKE nơi tìm kiếm các ký tự chữ% và _ (không phiên bản wildcard đa và đơn nhân vật của mình), bạn muốn sử dụng escape khoản của tình trạng like:

select * from my_table where some_text like '/%%' escape '/'; 

chỉ sẽ trả về các hàng trong đó some_text bắt đầu bằng dấu phần trăm.

2

Dường như bạn đang tìm kiếm thứ gì đó như lệnh SET DEFINE OFF, mà bạn có thể chạy và nó ảnh hưởng đến toàn bộ phiên SQL. Tuy nhiên, lệnh này chỉ ngăn Oracle tạo ý nghĩa đặc biệt cho ký tự dấu và. Nó không ảnh hưởng đến các ký tự đặc biệt khác như trích dẫn đơn.

Một vài liên kết để biết thêm chi tiết về những ký tự thoát theo:

https://forums.oracle.com/forums/thread.jspa?threadID=2256637

http://docs.oracle.com/cd/B10501_01/text.920/a96518/cqspcl.htm

+1

Dấu và được nhận dạng bởi trình khách SQL * Plus. Nó không phải là một ký tự đặc biệt cho máy chủ cơ sở dữ liệu thực tế. –

Các vấn đề liên quan