一、常用函式
1. if
a. 語法:if(expr1, expr2, expr3) ——>如果表示式expr1成立(真),返回結果expr2,否則返回結果expr3;
2. ifnull
a. 語法:ifnull(expr1, expr2) ——>如果expr1的值不為null,則返回expr1,否則返回expr2;
3. case when
a. 簡單函式:case [col_name] when [value1] then [result1] … else [default] end,應用場景:列舉這個字段所有可能的值
b. 搜尋函式:case when [expr] then [result1] … else [default] end,應用場景:
c. 舉例:
/**4. substring_index* 檢視場所資訊狀態
* @return
*/@query(value = "select case l.status when 1 then '審核中' when 2 then '審核不通過' when 3 then '審核通過' when 4 then '審核同步中' end as status, t2.op_obj, l.id from operate_log l, (select op_obj, max(operate_log_id) as id from operate_log_detail where op_obj in :ids group by op_obj) t2 where l.id = t2.id", nativequery = true)
listfindalloperateinfo(@param("ids") listids);
a. 語法:substring_index (str, delimiter, number) ——> 返回從字串str的第number個出現的分隔符delimiter之後的子串;
5. concat
a. 語法:concat(str1, str2, ...) ——> 將多個字串連線成乙個字串;
b. 注意:如果有任何乙個引數為null,則返回值為null;
c. 舉例:在乙個搜尋框中模糊匹配name和remark兩個字段資料
6. group_concat
a. 語法:group_concat([distinct] 要連線的字段 [order by 排序字段 asc/desc] [separator '分割符']) ——> distinct可以排除重複值,order by對結果的值進行排序,separator是乙個字串值,預設為乙個逗號,作用是將group by產生的同乙個分組中的值連線起來,返回乙個字串結果;
b. 舉例:
5和6的例項可參考:
7. max
a. 語法:max(expr):返回欄位expr中最大值,是針對數字型別,若是字串型別,請使用max(expr + 0),因為字串型別大小是先比較首字元,然後依次往後比較;
b. 舉例:value欄位是text型別
on hpr.id = hp.property_ref where hp.host_id = '1_1.12.109.17'; // 值是5
select max(case when hpr.`name` = 'hostgroupid' then hp.value + 0 end) as hostgroupid from host_pro hp left join host_pro_ref hpr8. date_formaton hpr.id = hp.property_ref where hp.host_id = '1_1.12.109.17'; // 值是48
a. 語法:date_format(date, format) ——> 用於以不同的格式顯示日期時間資料
b. format格式:可參考
c. 舉例:
select date_format(created_time, '%y%m') as accessyearmonth, date_format(created_time, '%e') as accessday date_format(created_time, '%k') as accesshour,可參考:mysql 函式大全date_format(created_time, '%y-%m-%d %h') as `time` from access_log group by `time` order by `time`
二、使用技巧
1. 乙個搜尋框的值模糊匹配上多個字段
a. select * from 表名 where concat(ifnull('欄位1', ''), ifnull( '欄位2', ''), ...) like concat('%', 關鍵字, '%');
b. ifnull函式的作用是為了解決有任何乙個字段引數為null,則該行返回值為null的情況。
2. 查詢資料行轉列
a. 利用max(case ... when ... then ... else ... end) as ...來實現,注意max函式若查詢最大值需要給字段加0;
b. 轉換前
c. 轉換後
3. 運算子優先順序
a. and和or聯合使用帶來的問題,需要用括號解決;
b. 舉例:select * from user where a = 1 and b = 2 or c = 3 區別與 select * from user where a = 1 and (b = 2 or c = 3);
c. 運算子優先順序。
4. in關鍵字查詢匹配多個字段:select * from user where (id, name) in ((1, '張三'), (2, '李四'));
5. 將一張表的資料插入另外一張表
a. 如果兩張表的字段一致:insert into table1 select * from table2;
b. 如果只希望匯入指定字段:insert into table1 (name1, age1) select name2, age2 from table2。
mysql 常用函式使用
and year t2.checkout time year 函式接收date型別,返回乙個年份。還有month 函式,乙個用法 mysql select year 2018 01 01 year 2018 01 01 2018 1 row in set大於。小於的,需要轉義。and t2.age ...
C vector常用函式及使用技巧
作用 它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。vector在c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。尾部插入數字 vec.push back a 使用下標訪問元素,cout 使...
MySql字串函式使用技巧
1 從左開始擷取字串 left str,length 說明 left 被擷取字段,擷取長度 例 select left content,200 as abstract from my content t 2 從右開始擷取字串 right str,length 說明 right 被擷取字段,擷取長度 ...