2012-05-07 37 views
17

Tôi đang tìm một danh sách các ký tự đặc biệt phải được thoát trong máy chủ sql ms nhưng không thể tìm thấy một và hầu hết các câu trả lời mà tôi đã thấy cho các câu hỏi tương tự được khuyên dùng truy vấn Tham số .. Tôi đã làm nhưng khung tôi đang sử dụng không có bất kỳ thoát cho tôi.Ký tự phải được thoát trong Tsql

Vì vậy tôi nghĩ rằng tôi sẽ đưa ra một loạt những thử và xem cái nào bị lỗi .... và tôi đã cố gắng một truy vấn đơn giản

select * from x where value = '<characters>' 

trong truy vấn như vậy tôi đã cố gắng gần như tất cả các nhân vật tôi có thể tìm trên bàn phím của tôi và tất cả chúng dường như hoạt động ... bên cạnh Singe Trích dẫn .. rằng một thất bại.

Vì vậy, tôi muốn biết danh sách các ký tự không hợp lệ và phải được thoát trong máy chủ sql sql - tsql và không muốn mạo hiểm thoát khỏi dấu nháy đơn và để phần còn lại có thể gây ra sự cố

Đánh giá cao sự giúp đỡ của bạn

+2

Huh? Có gì sai với các truy vấn được tham số hóa? – SLaks

+0

chúng hoạt động khác nhau trong các khung công tác khác nhau ... không hoạt động cho tôi –

+5

Sau đó, bạn nên giải quyết vấn đề đó. – SLaks

Trả lời

30

Ký tự duy nhất cần thoát trong chuỗi là một dấu nháy đơn (được thực hiện với hai dấu nháy đơn cùng nhau). Nếu không, đó là một chuỗi và t-sql sẽ fuss với nó không có thêm.

Nếu bạn đang sử dụng một tuyên bố LIKE, thấy điều này SO chủ đề Escape a string in SQL Server so that it is safe to use in LIKE expression

Là một sang một bên, bất kỳ khuôn khổ không cho phép tôi sử dụng các thông số, điều đó không đúng cách thoát khỏi thứ đối với tôi, là một khó khăn dừng lại. Cố gắng để khử trùng chuỗi đầu vào bằng tay giống như dựa vào phương pháp kéo ra; cuối cùng nó sẽ giúp bạn.

+0

Cảm ơn HackedByChinese, đó là xác nhận duy nhất tôi đã làm sau! –

+1

Lần đầu tiên tôi nhìn thấy thoát truy vấn bằng tay giống như kéo ra ... lol. – Corbin

+0

Nhờ Apache Cayenne cho việc này! –

0

Không chắc chắn điều này là chính xác.

%. và các ký tự đại diện khác tùy thuộc vào truy vấn, cũng có thể cần phải thoát. nơi bạn đang tìm dấu chấm. Điều này sẽ không thành công

select * from xxxx where field like '%.%' 
+1

Xin đừng phá hoại câu trả lời của bạn. Nếu bạn cho rằng nó không chính xác và muốn xóa nó, hãy nhấp vào liên kết "xóa" bên dưới bài đăng của bạn. – Tunaki

0

Tôi chỉ muốn nói rằng _ (gạch dưới) cũng cần phải được thoát.

select * from Sản phẩm nơi SomeColumn như 'FD [_]%'

Bằng cách này, không có gì sai với các truy vấn tham số, nhưng đôi khi bạn muốn đi đến công tác quản lý SQL console và nhanh chóng chạy một truy vấn để tìm một cái gì đó.

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