SELECT *
FROM Header
WHERE (userID LIKE [%'%])
Làm cách nào để tìm kiếm tên có dấu nháy đơn trong SQL Server?


Nhân đôi chúng để trốn thoát;
SELECT *
FROM Header
WHERE userID LIKE '%''%'

SELECT *
FROM Header WHERE (userID LIKE '%''%')

SELECT * FROM Header WHERE userID LIKE '%' + CHAR(39) + '%'

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.

Đó là:
SELECT * FROM Header
WHERE (userID LIKE '%''%')

select * from Header where userID like '%''%'
Hi vọng điêu nay co ich.

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.

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 Header
bả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 '%''%'

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ả.

Có thể bạn quan tâm
