Helpex - Trao đổi & giúp đỡ Đăng nhập
33

SELECT *
  FROM Header
 WHERE (userID LIKE [%'%])
33 hữu ích 0 bình luận 109k xem chia sẻ
70

Nhân đôi chúng để trốn thoát;

SELECT *
  FROM Header
 WHERE userID LIKE '%''%'
70 hữu ích 1 bình luận chia sẻ
12
SELECT     *
FROM Header WHERE (userID LIKE '%''%')
12 hữu ích 1 bình luận chia sẻ
7
SELECT *   FROM Header  WHERE userID LIKE '%' + CHAR(39) + '%' 
7 hữu ích 0 bình luận chia sẻ
2
SELECT * FROM TableName WHERE CHARINDEX('''',ColumnName) > 0 

Khi bạn có cột với lượng lớn dữ liệu nvarchar và hàng triệu bản ghi, kiểu tìm kiếm 'LIKE' chung sử dụng ký hiệu tỷ lệ phần trăm sẽ làm giảm hiệu suất của hoạt động SQL.

Mặc dù chức năng TSQL có sẵn của CHARINDEX nhanh hơn nhiều và sẽ không bị mất hiệu suất.

Tham khảo bài đăng SO để có cái nhìn so sánh.

2 hữu ích 0 bình luận chia sẻ
1

Đó là:

SELECT * FROM Header 
WHERE (userID LIKE '%''%')
1 hữu ích 0 bình luận chia sẻ
1
select * from Header where userID like '%''%'

Hi vọng điêu nay co ich.

1 hữu ích 0 bình luận chia sẻ
1

Trước hết, giá trị truy vấn Tìm kiếm của tôi là từ thông tin đầu vào của người dùng. Tôi đã thử tất cả các câu trả lời trên câu này và tất cả các kết quả mà Google đã cho tôi, 90% câu trả lời cho biết đặt '%' '%' và 10% còn lại nói một câu trả lời phức tạp hơn.

Vì một số lý do tất cả những điều đó không hiệu quả với tôi.

Làm thế nào tôi nhớ rằng trong MySQL (phpmyadmin) có chức năng tìm kiếm này được xây dựng sẵn, vì vậy tôi đã thử nó chỉ để xem cách MySQL xử lý tìm kiếm bằng dấu nháy đơn, hóa ra MySQL chỉ thoát khỏi dấu nháy đơn bằng dấu gạch chéo ngược LIKE '%\'%' vậy tại sao tôi lại thay thế dấu nháy đơn bằng \'trong mọi truy vấn của người dùng.

Đây là những gì tôi nghĩ ra:

if(!empty($user_search)) {
        $r_user_search = str_ireplace("'","\'","$user_search");
        $find_it = "SELECT * FROM table WHERE column LIKE '%$r_user_search%'";
        $results = $pdo->prepare($find_it);
        $results->execute();

Điều này giải quyết vấn đề của tôi. Cũng xin vui lòng sửa cho tôi nếu điều này vẫn còn có vấn đề bảo mật.

1 hữu ích 0 bình luận chia sẻ
0

Dấu ngoặc nhọn được sử dụng xung quanh số nhận dạng, vì vậy mã của bạn sẽ tìm kiếm trường %'%trong Headerbảng. Bạn muốn sử dụng một chuỗi được cài đặt sẵn. Để đặt một dấu nháy đơn trong một chuỗi ký tự, bạn sử dụng dấu nháy đơn kép.

SELECT *
FROM Header WHERE userID LIKE '%''%'
0 hữu ích 0 bình luận chia sẻ
0

So sánh các tên chứa dấu nháy đơn trong DB thông qua mã Java

String sql="select lastname  from employee where FirstName like '%"+firstName.trim().toLowerCase().replaceAll("'", "''")+"%'"

statement = conn.createStatement();
        rs=statement.executeQuery(Sql);

lặp lại các kết quả.

0 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ sql sql server apostrophe , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading