2011-10-18 69 views
6

Tôi muốn thực hiện tìm kiếm máy chủ SQL nhỏ trong dự án web ASP.NET của mình, cơ sở dữ liệu của tôi không lớn nên tôi nghĩ tốt hơn là không sử dụng tìm kiếm toàn văn Tôi muốn thực hiện một tìm kiếm đơn giản như thế này:Truy vấn sử dụng ký tự đại diện LIKE trong máy chủ sql

select * from mytable where columnA LIKE '%something%' 

tôi có thể sử dụng = theo cách sau:

select * from mytable where columnA='"+myVariable+"' 

nhưng làm thế nào tôi có thể sử dụng một biến thay vì %something% trong cụm từ như thế nào? có đúng không? LIKE '"+%myVariable%+"' ???

tôi sử dụng VS2010, C#

nhờ

+4

Đúng nhưng cũng rất tệ. Việc ghép nối các chuỗi để tạo các câu lệnh SQL có thể khiến bạn mở rộng đến việc tiêm SQL. Giả sử myVariable có giá trị ''; drop table mytable;'? Nhìn vào các truy vấn được tham số hóa hoặc một trong các giống LINQ để tương tác với DB – spender

+0

@spender: xác thực bảo mật phải được thực hiện trước khi thực thi truy vấn, vì vậy đây không phải là câu hỏi của truy vấn – sll

+3

@ sll Tôi không mua nó. Rất khó để "bảo mật xác thực" chuỗi sẽ được trộn lẫn vào câu lệnh SQL. Tốt hơn là không nên làm điều đó. – spender

Trả lời

7

Sử dụng:

where columnA LIKE '%' + myVariable + '%' 
+0

Tại sao bạn được sử dụng các dấu ngoặc khác nhau? – sll

+0

Tôi nghĩ bạn đang nói về các dấu trích dẫn đơn và đôi. Tôi sử dụng nó như là một ví dụ từ truy vấn của bạn được đưa ra trong câu hỏi, như thế này: 'select * từ mytable, nơi columnA = '" + myVariable + "''. Vì vậy, trong truy vấn này nếu bạn muốn sử dụng 'LIKE', sau đó thêm'% 'sau dấu nháy đơn (' '') và tương tự đóng nó lại. –

8
WHERE 
columnName LIKE '%' + myVarCharVariable +'%' 
0

Vâng, bạn có thể làm điều gì đó như:

var query = "SELECT * FROM MyTable WHERE columnA LIKE '%" + myVariable + "%'"; 
5

Hãy thử truy vấn này:

select * from tablename where colname like '%' + @varname + '%' 

Hy vọng nó giúp.

1
DECLARE @myVariable varchar(MAX) 
SET @myVariable = 'WhatYouAreLookingFor' 
SELECT * FROM mytable 
    WHERE columnA LIKE '%' + @myVariable + '%' 
1

Trong trường hợp người khác tình cờ gặp phải bài đăng này như tôi đã làm. Trên SSMS 2012 với một máy chủ SQL 2012 trở lại kết thúc tôi đã có thể sử dụng mã như sau mà không có vấn đề.

Declare @MyVariable 

Set @MyVariable = '%DesiredString%' 

Select * 

From Table_A 

Where Field_A like @MyVariable 

Sau đó, mỗi lần bạn muốn thay đổi Chuỗi mong muốn, hãy thay đổi nó tại câu lệnh Đặt.

Tôi biết bài đăng này đã được thực hiện trước năm 2012 đó là lý do tại sao tôi đề cập đến nó trong trường hợp ai đó có thiết lập mới hơn tìm kiếm bài đăng này.

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