20061222

多個欄位的單一關鍵字查詢,請用 or 運算子

試想,若你希望使用者輸入一個關鍵字來查詢資料, 此關鍵字可以是員工代號,或是員工姓名,那麼也許你會執行兩次 SQL,並判斷兩次 SQL 是否有資料,以達到上述功能:

SQL1:
sqlstr = "select *
from employee
where 1 = 1
and emp_no = '#{keyword}'"

SQL2:
sqlstr = "select *
from employee
where 1 = 1
and emp_name = '#{keyword}'"


上述二個 SQL 可簡單的以 or 運算子合併成下式:

SQL3:

sqlstr = "select *
from employee
where 1 = 1
and emp_no='#{keyword}' or emp_name = '#{keyword}'"

如此一來除了更為簡潔,也讓原本要執行兩次 SQL 查詢,減為一次。

沒有留言: