mysql 实用方法
数据类型转换
select cast('123.34595' as DECIMAL(12,2)); -- 123.35
- 支持类型
支持类型 | 描述 | 补充 |
---|---|---|
BINARY | 二进制型 | |
CHAR | 字符型 | |
DATE | 日期,格式为 'YYYY-MM-DD' | |
DATETIME | 日期加具体的时间,格式为 'YYYY-MM-DD HH:MM:SS’ | |
TIME | 时间,格式为 'HH:MM:SS’ | |
DECIMAL | float型 | |
SIGNED | int 型 | |
UNSIGNED | 无符号int |
拼接
# 拼接
-- CONCAT(string1,string2...)
select concat('abc','123'); -- abc123
-- CONCAT_WS(separator,string1,string2,string3...)
select concat_ws(',','abc','123'); -- abc,123
正则表达式
# 正则表达式
-- REGEXP '[A-Z]'
select 'A' regexp '[A-Z]'; -- 1
select 'a' regexp '[A-Z]'; -- 1 -- 不区分大小写
select '1' regexp '[A-Z]'; -- 0
-- example:
-- update order_detail set warehouseName = REPLACE(sourceTradeNo,'A','') where sourceTradeNo like "%A%" and RIGHT(sourceTradeNo,1) REGEXP '[A-Z]';
截取字符串
# 截取字符串
-- SUBSTR (str, 起始位置, 长度)
SELECT SUBSTR('2018-08-17',5,6); -- -08-17
-- substring_index(字符串,分隔符,序号)
select substring_index('aa,bb,cc,vv',',',1); -- aa
-- example:
-- update dc_cw_warehouse_return_d set wldh=substring_index( wldh,'R02T',-1) where wldh like '%R02T%';
替换字段中的字符
# 替换字段中的字符
select replace('aabbccvv','bbcc','=='); -- aa==vv
select right('abc',1); -- c
select left('abc',1); -- a
-- example:
-- right(sourceTradeNo,1) REGEXP '[A-Z]' 字段的第一位置,字符在 指定[A-Z]范围内
-- update order_detail set warehouseName = REPLACE(sourceTradeNo,'A','') where sourceTradeNo like "%A%" and RIGHT(sourceTradeNo,1) REGEXP '[A-Z]';
返回字符长度
# 返回字符长度
-- CHAR_LENGTH()
select char_length('abc'); -- 3
字符串是否被包含
# 字符串是否被包含
-- locate(str,sub) > 0,表示sub字符串包含str字符串;
-- locate(str,sub) = 0,表示sub字符串不包含str字符串;
select locate('a','abc'); -- 1
格式化时间字符串
# 格式化时间字符串
select date_format('2022-10-10 23:59:59.123','%Y-%m'); -- 2022-10
删除字段前导尾导字符
# 删除字段前导尾导字符,未指定则是删除空字符
select trim(leading 'x' from 'xxxnamexxx'); -- namexxx
select trim(trailing 'x' from 'xxxnamexxx'); -- xxxname
select trim(both 'x' from 'xxxnamexxx'); -- name
-- example:
-- update dc_cw_warehouse_return_d set bar_code=trim(bar_code);
-- select trim(both 'j' from name) from test.a;
查询中的条件语句
# 查询中的条件语句
select case 'abc'
when 'a' then '是a'
when 'b' then '是b'
when 'abc' then '是abc'
else '什么都不是'
end '字段名' ; -- 是abc
-- example:
-- select oid,group_concat(refund_id),group_concat(sid)sid,sum(refund_fee)refund_fee,
-- case when sum(has_good_return)=1 then '退货退款' else '仅退款' end has_good_return
-- from pc_tb_open_refunds_order
-- where DATE_FORMAT(modified,'%Y-%m-%d')='2022-01-01'GROUP BY oid;
更新赋值
# 更新赋值
update dc_cw_warehouse_return_d set wldh=wldh_old where wldh='';
连接多个查询
# 连接多个查询
select 'Field01','Field02' union all select 'Field01','Field02';
分组合并
# 分组合并
-- GROUP_CONCAT([DISTINCT] column1 [ORDER BY column2 ASC\DESC] [SEPARATOR seq]);
-- 将分组中column1这一列对应的多行的值按照column2 升序或者降序进行连接,其中分隔符为seq
-- 如果用到了DISTINCT,将表示将不重复的column1按照column2升序或者降序连接
-- 如果没有指定SEPARATOR的话,也就是说没有写,那么就会默认以 ','分隔
-- example:
-- select group_concat(distinct details_id ORDER BY id desc separator '-') from test.a;
导出数据工具
# 导出数据工具
load data local infile 'C:/mysqlFile/file.csv' -- 文件路径必须是全英文的 文件路径另外一种形式:D:\\01_xlsx_file\\douyin_xiaodian01.csv
replace into table pc_homay.dc_cw_douyin_bill_d -- 选择对应的数据库和表
fields terminated by ','
optionally enclosed by '"'
lines terminated by '\n'
ignore 1 lines(bill_time,fund_flow,fund_flow_desc,account_amount); -- 选择数据库的字段,按照位置参数。
查看当前执行的存储过程
# 查看当前执行的存储过程
select * from information_schema.innodb_trx;
会显示当前的数据库的进程
# 会显示当前的数据库的进程
show full processlist;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?