与大多数语言一样,SQL支持利用函数来处理数据。
好处:函数一般在数据上执行,给数据的转换和处理提供了方便。
可移植的(portable) : 能运行在多个系统上的代码。
注意:
1、多数SQL 是可移植的,在不同的DBMS 上虽有差异,但不难处理
2、函数的可移植性不高,几乎主要的DBMS 都有各自独特的函数(我行你不行,你行我不行之类),而且差异还很大
3、如果决定使用函数,要写注释(--),函数可以有效的完成工作,利于应用程序的性能。
大多数SQL 实现支持的类型函数:
1、用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数
2、用于在数值数据上进行算数操作(如返回绝对值,进行代数运算)的数值函数
3、用于处理日期和时间值并从这些值中提取特定成份(如:返回两个日期之差,检查日期的有效性等)的日期和时间函数。
4、返回DBMS 正使用的特殊信息(如返回与用户登陆信息,检查版本细节)的系统函数。
one、文本处理函数
简单使用:
-- 将名字转换为大写 select vend_name,Upper(vend_name) as vend_bigname from vendors order by vend_name;
soundex() 函数匹配所有发音类似的
要全部包括起来
select 字段 from 表名 where soundex(字段名) = soundex(该字段中发音类似的值);
Two、日期和时间处理函数
日期和时间采用相应的数据类型和特殊的格式存储,以便能快速和有效的排序或过滤,并节省物理存储空间
一般应用程序不使用用来存储日期和时间的格式,因此日期和时间函数总是被用来读取统计和处理这些值。
注意:MySQL 使用的日期格式,无论你什么时候指定一个日期,不管是插入、更新或使用where进行过滤,
日期的格式必须是 yyyy-mm-dd ,虽然,MySQL支持两位数字的年份,但这是首选的(如2020-02-20)
使用的表
我们发现存储的数据类型是 datetime 格式是 yyyy-MM-dd HH:mm:ss
而我们一般可能需要的只是日期部分,怎么办来
有两种方式,
一种是放在程序里取日期部分
另一种是利用函数只取日期部分
-- 取日期部分 select order_num,date(order_date) as onlydate from orders order by order_date;
查询也是,如果只是想查询日期,则要使用Date(),即使你知道相应的列只包括日期也是如此
-- 将日期是2005-09-01 的检索出来 select order_num,order_date as onlydate from orders where date(order_date)= ‘2005-09-01‘ order by order_date;
时间的范围查找
-- 将日期在2005-09-01 到 2005-09-30之间的 的检索出来 select order_num,order_date as onlydate from orders where date(order_date) between ‘2005-09-01‘ and ‘2005-09-30‘ order by order_date;
支持多种查询方式
Three、数值处理函数 : 对数值进行处理,一般用于代数、三角或几何运算
在主要的DBMS 中数值函数是最一致最统一的函数
试一试