记录一下实际应用中mysql方面需要注意的地方



文章目录

  • 1、MySQL按照汉字的拼音排序
  • 2、mysql排序字段为空的排在最后面
  • 3、CAST的数据类型转换函数
  • 3.1去除Decimal后面多余的0
  • 4、mysql大于等于、小于等于的写法
  • 5、



1、MySQL按照汉字的拼音排序

按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序;

如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了)。
直接在查询语句后面 添加 order by name asc; 查询结果按照姓氏的升序排序;

如果存储姓名的字段采用的是 utf8字符集,需要在排序的时候对字段进行转码;对于的代码是
order by convert(name using gbk) asc;同样,查询的结果也是按照姓氏的升序排序


2、mysql排序字段为空的排在最后面

排序字段为orderid;
1、使用order by orderid desc实现降序时,orderid 为null数据的会排在数据的最后面;
但是,order by orderid升序时,orderid 为null的数据则会排在最前面,如果想要将orderid
为null的数据排在最后,就需要加上is null。

select * from user u order by u.orderid is null, u.orderid

3、CAST的数据类型转换函数

CAST ( expression AS data_type )

CAST 函数的可转换类型,包含:

  • 二进制,同带binary前缀的效果 :BINARY
  • 字符型,可带参数 : CHAR
  • 日期 : DATE
  • 时间: TIME
  • 日期时间型 : DATETIME
  • 浮点数 : DECIMAL
  • 整数 : SIGNED
  • 无符号整数 : UNSIGNED

3.1去除Decimal后面多余的0

#处理前

SELECT '0.12000','1.203010','-0.20'

#处理后

SELECT 0+CAST('0.12000' AS CHAR),0+CAST('1.203010' AS CHAR),0+CAST('-0.20' AS CHAR)

实际应用

select
        ifnull(sum(ot.report_time_count),0)  as  "reportTimeCount"  ,
        ifnull(sum(ot.app_time_count),0)  as  "appTimeCount"  ,
		#先将visit_count转为保留两位小数的数值,求和之后使用  0 + CAST(expr AS CHAR)  去除小数点后面多余的0
		#即如果是整数则展示整数,如果是小数则舍小数点末尾连续的0
        0+CAST(ifnull(sum(cast(ot.visit_count as decimal(18,2))),0) as char)   as  "visitCount"
        from own_test ot

4、mysql大于等于、小于等于的写法

大于等于  <![CDATA[ >= ]]>
小于等于  <![CDATA[ <= ]]>

大于 <![CDATA[ > ]]>
小于 <![CDATA[ < ]]>

原符号

<

<=

>

>=

&


替换符号

&lt;

&lt;=

&gt;

&gt;=

&amp;

&apos;

5、