2020 mysql 常用写法
目录
1,设置默认值
2,左截取,右截取
3,长度超过限值,显示单号加‘等’ 号
4,sum 用法
5,group_concat 用法
5.1,group_concat case when 用法
法典大全
1,常规用法,
在数据库添加一个字段,给其固定值;
SELECT
‘张三’ as name12,
SELECT
‘张三’ as name12, main.payment_no,
– 从左截取5位
left(main.payment_no,5) payment_no ,
– 从右截取5位
right(main.payment_no,5) payment_no ,
–CONCAT
SELECT
‘张三’ as name12, main.payment_no, left(main.payment_no,5) payment_no , right(main.payment_no,5)
payment_no ,
在原来数据值基础上添加 一个等
CASE WHEN length(main.payment_no)>19 THEN
CONCAT(left(main.payment_no,21),‘等’ ) ELSE main.payment_no END
2,非常规用法
sum ,设置固定特定字段默认值,group_concat (case when ) 特殊用法
## sum统计,特定值设置:
select t.document_type,
t.payment_unit ,t.cust_name_cn ,count(1) 发票统计,
'专票' zp, sum(CASE t.document_type WHEN '1' THEN 1 ELSE 0 END ) zpsum,
'普票' pp, sum(CASE t.document_type WHEN '3' THEN 1 ELSE 0 END ) ppsum,
结果如下
##发票号码,总金额 合在一起
(一个公司有多个发票号码)
sql 如下
select t.document_type,
t.payment_unit ,t.cust_name_cn ,count(1) 发票统计,
'专票' zp, sum(CASE t.document_type WHEN '1' THEN 1 ELSE 0 END ) zpsum,
'普票' pp, sum(CASE t.document_type WHEN '3' THEN 1 ELSE 0 END ) ppsum,
group_concat('发票号码:',t.invoice_no,':总金额',t.amount_total Separator '| ') invoiceAmount,
结果如下
## group_concat 中的数据进行分类,专票普票分开 以及 case when 用法
select t.document_type,
t.payment_unit ,t.cust_name_cn ,count(1) 发票统计,
group_concat(
'发票号码:', ((CASE t.document_type WHEN '1' THEN t.invoice_no else 0 END )) ,
';金额', ((CASE t.document_type WHEN '1' THEN t.amount_total else 0 END )) Separator '| ') 专票0,
group_concat(
'发票号码:', ((CASE t.document_type WHEN '3' THEN t.invoice_no else 0 END )) ,
';金额', ((CASE t.document_type WHEN '3' THEN t.amount_total else 0 END )) Separator '| ') 普票0,
如上图所示,会多出 发票号码:0;金额0.00
这个可不可以去掉呢,答案:可以,请看下方sql
## group_concat 中的数据进行分类,专票普票分开 以及 case when 用法,去掉空值0
select t.document_type,
t.payment_unit ,t.cust_name_cn ,count(1) 发票统计,
group_concat(
'发票号码:', ((CASE t.document_type WHEN '1' THEN t.invoice_no END )) ,
';金额',((CASE t.document_type WHEN '1' THEN t.amount_total END )) Separator '| ') 专票1,
group_concat(
'发票号码:', ((CASE t.document_type WHEN '3' THEN t.invoice_no END )) ,
';金额', ((CASE t.document_type WHEN '3' THEN t.amount_total END )) Separator '| ') 普票1
结果如下图
end
mysql数据库 时间细化到毫秒
表示保留到六位毫秒数timestamp(6),也可以三位timestamp(3)
ALTER table dept add COLUMN open_time timestamp COMMENT '开票时间';
alter table dept modify column point_inv_time TIMESTAMP(3) comment '打印时间';
3,mysql类型转换
string 转换为decimal
CAST()函数,把一个字段转成另一个字段
用法:Cast(字段名 as 转换的类型 )
sum(cast(d.item_amount as decimal(18,2))) amount_total, -- 统计总金额
3.1
varchar(200) 转换为decimal 保留3位小数
varchar(200) 转换为decimal 保留3位小数
sum(cast(main.ext_field_01 as decimal(18,3)) ) ext_field_01
select sum(cast(t.ext_field_01 as decimal(18,3)) ) ext_field_01 from ar_tax_bill_main t where deleted =0
4,select语句 id in 多个id 如何查询? 逗号隔开
6216,6217
结果如下:查找到两条数据
sql 语句
select t.* from a表 t
where find_in_set(t.id,(select s.remark from b表 s where s.id=470 ));
t.id=112
t.id=113
sid=112,113
find_in_set(t.id,sid)
5,索引创建 和字段 add
添加索引
ALTER TABLE `invoice` ADD INDEX `idx_create_time` (`create_time`) ;
ALTER TABLE `interface_record` ADD INDEX `idx_interface_edno` (`ext_field1`) ;
添加字段
-- isdelete
ALTER table header add COLUMN isdelete varchar(20) COMMENT '是否已通知标识,用于修改删除 ';
-- errormsg e7_errormsg
ALTER table header add COLUMN e7_errormsg varchar(1000) COMMENT '存放通知信息';
其他内容
mybatis http://www.cnblogs.com/xdp-gacl/p/4264440.html
{0}================ mybatis 一种比较奇怪的写法 mybatis {arg0} 与 {0}
Dao层函数 User getUserBys(int id,String name);
对应的mapping.xml select
- from user where id = #{0} and name=#{1}
这种方法应该是对的,但是如果你使用的是mybatis3.4.2或者之后的版本,就会产生绑定异常: