SQL語句當查詢條件爲空時默認查詢全部數據,不爲空是則按照條件進行查詢

        最近做web的時候遇到一個問題,在對列表數據進行查詢時,會有多個查詢條件,有些查詢條件有數據,有些查詢條件則爲空,某個查詢條件爲空時則要默認查詢此字段下的全部數據,這樣的SQL查詢語句該怎麼寫呢?以下介紹兩種寫法。

1. 樸素的寫法:

select * fromwhere (字段=條件 or 條件='')

        這條SQL語句的意思就是當條件不爲空時SQL語句等價於:select * from 表 where 字段=條件; 當條件爲空時SQL語句等價於:select * from 表 where ''='';這樣就實現了當查詢條件爲空時默認查詢全部數據,當查詢結果非空時則查詢對應的數據。

下面是一個簡單的例子:

在這裏插入圖片描述
        這是一張簡單的學生信息表,假設查詢時允許輸入的條件有兩個,分別是sex和math,假設用戶只輸入的sex的值’F’,並沒有輸入math對應的值,那麼就應該對錶中sex的值爲’F’的數據進行查詢,因爲math輸入的值爲空,則默認查詢math等於任何值的數據,則SQL語句的編寫應該如下:

SET @sex='F';
SET @math='';
SELECT * FROM student_test WHERE (sex=@sex OR @sex='') AND (math=@math OR @math='');

查詢的結果:

在這裏插入圖片描述

2. 運用sql的like關鍵字實現模糊查詢功能

實現上述查詢功能的SQL語句用like關鍵字實現:

SELECT * FROM student_test WHERE (字段 LIKE '%條件%');

其中“%”表示可以爲任意字符,這句SQL語句也不難理解,這樣一樣可以處理條件爲空的情況。

依舊是處理上面的例子,以下是運用like關鍵字的SQL語句:

SELECT * FROM student_test WHERE (sex LIKE '%F%') AND (math LIKE '%%');

查詢的結果:

在這裏插入圖片描述

        這樣就實現了當查詢條件爲空時默認查詢全部數據,不爲空是則按照條件進行查詢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章