Tôi có một câu hỏi và có thể đơn giản của nó (cho bạn Gurus).Dynamic MySQL Where Clause in Stored Procedure
Tôi đang chuyển lớp SQL Paging của mình từ C# sang thủ tục lưu trữ MySQL. Trong đối tượng C# do nhà tạo của tôi, truy vấn được xây dựng động dựa trên tiêu chí. Ví dụ:
if(keywords is not null)
{
whereClause += "WHERE description LIKE '%keywords%'"
}
if(price is not null)
{
whereClause += "AND price = '%price%'"
}
....
string query = "SELECT col1, col2 FROM tblThreads " + whereClause
Bây giờ, câu hỏi của tôi là: Làm thế nào để làm một mệnh đề where động trong MySQL tương tự như này? Hay đúng hơn, nếu họ không nhập bất cứ thứ gì cho các tham số đó, làm thế nào tôi có thể nói với MySQL trong thủ tục lưu trữ để bỏ qua những thứ đó? IE:
SELECT col1, col2 FROM tblThreads
Điều gì đó giống như công việc này, nếu các thông số đó là rỗng?
SELECT col1, col2 FROM tblThreads WHERE (IS NULL @keywords OR description like '%@keywords%'
??
Xin cảm ơn các bạn.
Tôi thích trang này. Tôi sử dụng bản thân mình, khi tôi phải phân tích các câu lệnh SQL "nặng", tức là loại bỏ mệnh đề AND. Cho phép bạn 'quay trở lại trước đó' AND ', và loại bỏ dòng đó, v.v. Giảm giá WHERE khiến việc này trở nên dễ dàng hơn nhiều. –
Tôi đã nhìn thấy điều này một lần trước đây, và mặc dù nó không trả lời câu hỏi ban đầu của tôi nó là thú vị. Giả sử tôi dính vào lớp đối tượng C# của tôi, ngay bây giờ tôi đang cố gắng để xác định nếu tôi đang sử dụng "AND" (tôi có một biến boolean được đặt thành đúng thời điểm tôi sử dụng VÀ.) Giả sử tôi làm điều này, tôi sẽ 't phải theo dõi khi tôi sử dụng tham số đầu tiên của tôi, đúng không? Điều này có bất kỳ hình phạt hiệu suất nào và 1 = 1 có gây ra bất kỳ vấn đề nào không? –
Chỉ cần tra cứu một số chi tiết bổ sung tại đây: http://stackoverflow.com/questions/8149142/where-1-1-statement Tôi thực sự thích ý tưởng này và sẽ thử triển khai nó. Cảm ơn vì tiền hỗ trợ! Tôi cũng có thể xây dựng thủ tục lưu trữ của mình bằng phương pháp này nếu tôi quyết định theo đuổi con đường đó. Cảm ơn các bạn. –