sql语句冷门使用技巧


数据库中存储的是时间,如何快速筛选某一天的数据

created_date
2024-10-11 19:47:55
2024-10-11 19:47:55
2024-10-11 19:47:55
2024-10-11 19:48:55

如何查询 2024-10-11 的数据

select created_date,SUBSTRING(created_date, 1, 10)
from vxlink_registration_server.tc_case_transaction tct
where SUBSTRING(created_date, 1, 10) = '2024-10-11';

这种字符串还能用于范围查询,大于、小于都可以。

mysql排序null值排在最后

在MySQL中,可以使用ORDER BY语句结合IS NULL来实现将NULL值排在后面的排序。具体做法是,在ORDER BY子句中使用IS NULL函数,并为其赋予一个较大的排序值,确保NULL值被排序在非NULL值之后。

SELECT * FROM your_table ORDER BY (your_column IS NULL), your_column ASC;

查询某个字段包含空格、首尾包含空格

from vxlink_channel.dm_collection_agency dca where collection_agency_name like '% %' and is_deleted = 0;
select * from vxlink_channel.dm_collection_agency dca WHERE TRIM(BOTH ' ' FROM collection_agency_name) != collection_agency_name and is_deleted = 0;

查看正在执行的慢sql

SELECT
    -- 进程ID,用于终止慢SQL
    t.ID,
    -- 执行SQL的用户
    t.USER,
    -- 连接来源的IP和端口
    t.HOST,
    -- 执行的数据库
    t.DB,
    -- 执行状态(Sleep/Query等)
    t.COMMAND,
    -- 已运行时间(单位:秒)
    t.TIME,
    -- 正在执行的SQL语句
    t.INFO
FROM information_schema.PROCESSLIST t
WHERE
  -- 筛选正在执行查询的会话(排除Sleep状态)
    t.COMMAND = 'Query'
  -- 筛选运行时间超过10秒的SQL(阈值可根据需求调整)
  AND t.TIME > 10
  -- 排除系统库的内部操作
  AND t.DB IS NOT NULL
ORDER BY t.TIME DESC;

评论