mysql 常用写法2020

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或者之后的版本,就会产生绑定异常:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值