ฉันมีหน้าค้นหา ASP.net ซึ่งผู้ใช้สามารถป้อนเกณฑ์การค้นหาตั้งแต่หนึ่งเกณฑ์ขึ้นไป เพจนี้เรียกกระบวนงานที่เก็บไว้เพื่อสอบถามฐานข้อมูล MS SQL Server 2008
เกณฑ์การค้นหาส่วนหนึ่งคือวันที่เดียวหรือช่วงวันที่ หากผู้ใช้ระบุ Date1 เราจะค้นหาในวันที่เดียว หากผู้ใช้ระบุ Date1 และ Date2 เราจะค้นหาในช่วงวันที่
ปัญหาของฉันคือการเข้ารหัสตรรกะนี้ใน proc ที่เก็บไว้
@Date1 datetime
@Date2 datetime
..other search params...
จึงมีเงื่อนไขสามประการ:
- ทั้ง @Date1 และ @Date2 เป็นโมฆะ (ผู้ใช้ไม่ได้ค้นหาวันที่)
- @Date1 ไม่เป็นโมฆะและ @Date2 เป็นโมฆะ (ผู้ใช้กำลังค้นหาในวันที่เดียว)
- @Date1 ไม่ใช่ null และ @Date2 ไม่ใช่ null (ผู้ใช้กำลังค้นหาช่วงวันที่)
ฉันไม่สามารถหาวิธีจัดโครงสร้าง WHERE clause เพื่อจัดการกับเงื่อนไขที่เป็นไปได้ทั้งสามเงื่อนไขได้
ฉันคุ้นเคยกับ ISNULL()
และ COALESCE()
คำแนะนำหรือข้อเสนอแนะใด ๆ ที่ชื่นชมอย่างมาก