1.where 欄位名 regexp '正規表示式'
正則符號: ^ $ . [ ] * |
. 表示1個任意字元
* 表示前面重複0次,或者任意次
^ 開始
$ 結尾
[] 範圍
| 或
sql示例:
#查詢以【李】開頭的
select name from user where name regexp '^李';
#查詢以【小】結尾的
select name from user where name regexp '小$';
#查詢以【李】開頭,中間任意,結尾以【四】的
select name from user where name regexp '^李.*四$';
#查詢名字以【李】開頭,或者以【小】結尾的
select name from user where name regexp '^李|小$';
2. instr、concat搜尋和連線字串
資料欄位中存放的是id集,形如 1,2,15,35 也可類推json格式
查詢時不用拆分了, 用上 instr、concat搜尋和連線字串
查詢ids中包含15的
sql示例:
select * from [table-表名] where instr(concat(',', ids, ','), ',15,') > 0
3.查詢時,多個欄位 like 同個值
like多個值 and和的關係
like多個值 or的關係 可用regexp
sql示例:
select * from user where name regexp '張三|李四'
4.查詢結果過濾
having用法:
SQL查詢 having 條件表示式;就是在查詢結果中再查詢一次
sql示例:
select name from user where name !="李四" having name="李小小";
5.mysql內建對資料進行統計的指令
聚焦函式:
avg(欄位名)
sum(欄位名)
min(欄位名)
max(欄位名)
count(欄位名)
sql示例:
##查詢名字不等於李四的人員的平均分數
select avg(score) from user where name != "李四";
##查詢最高分數
select max(score) from user;
##查詢最低分數
select min(score) from user;
##查詢總分數
select sum(score) from user;
##統計user表中的行數
select count(*) from user;
6.mybatis中mapper.xml where下foreach寫法
A寫法:
<where>
ID in
<foreach close=")" collection="array" item="ids" open="(" separator=",">
'${ids}'
</foreach>
</where>
B寫法:
<where>
<if test="ids!= null and ids.size() > 0">
and id in
<foreach collection="ids" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<where>