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; 
posted @ 2023-01-09 17:01  空白的时间  阅读(15)  评论(0编辑  收藏  举报