SQL常用的一些函数

89 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

SELECT DISTINCT name,age,user_id,MAX(last_update_dt) AS last_update_dt  GROUP BY name,age,user_id
ORDER BY MAX(last_update_dt) desc 
--一般字典表或者下拉框的值都要去重,去重的要用(DISTINCT GROUP BY)展示的值要在GROUP BY进行分组否在无法展示除非使用其他函数进行展示

-- %Y-%m-%d %H:%i:%s 年月日时分秒
SELECT STR_TO_DATE('2016-01-02', '%Y-%m-%d'); --字符串转时间
SELECT FROM_UNIXTIME(1567267200,'%Y-%m-%d'); --时间戳转时间
SELECT UNIX_TIMESTAMP('2019-09-01 00:00:00'); --日期转时间戳
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); --日期转为字符串

-- if else
SELECT 
 CASE 
 WHEN name is '江踏歌1' THEN 'Azure'
 WHEN name is '江踏歌2' THEN '红豆'
 WHEN name is '江踏歌3' THEN '年糕'
 END AS name
FROM
user
-- 查询到name是江踏歌的数据将name改为 Azure,name江踏歌3改为年糕是可以一次写多个,name江踏歌2改为红豆是可以一次写多个

-- 数字千分位 1000-->1,000
SELECT format(1000,'N2') --1,000

-- 数字百分比
SELECT CONCAT(TRUNCATE((0.9194) * 100, 2), '%') -- 90.00% 2表示保留几位

-- 大于&gt;>, 小于&lt;<

-- Mybatis 踩坑语法 scAllAmount="<=500" mis="1,2,3,4"
-- 页面传入 ""  contains是否包含传入的参数 注意因为传入的是"<=500" 函数contains只接受"" 
-- 所以这里的引号需要写成 'params.scAllAmount.contains("&lt;=")'
<if test='params.scAllAmount.contains("&lt;=")'>
    and sc_all_amount &lt;= cast(' ${params.scAllAmount.split("&lt;=")[1]} ' as decimal(12,2))
    -- params.scAllAmount.split 分割后为————[,500]
</if>
<if test="params.mis != null and params.mis !=''">
    and mis in
        <foreach collection="params.mis.split(',')" item="item" open="(" separator="," close=")">
        -- collection 传入的参数 item得到的参数 open以(开始 separator以,分割 close以)
            #{item}
        </foreach>
</if>