美文网首页
Mysql第十一章数据处理函数

Mysql第十一章数据处理函数

作者: 足__迹 | 来源:发表于2024-08-15 09:40 被阅读0次

    同大多数计算机语言一样,SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。
    注意点:

    函数没有SQL的可移植性强 能运行在多个系统上的代码称为可移植的(portable)。相对来说,多数SQL语句是可移植的,在SQL实现之间有差异时,这些差异通常不那么难处理。而函数的可移植性却不强。几乎每种主要的DBMS的实现都支持其他实现不支持的函数,而且有时差异还很大。 为了代码的可移植,许多SQL程序员不赞成使用特殊实现的功能。虽然这样做很有好处,但不总是利于应用程序的性能。如果不使用这些函数,编写某些应用程序代码会很艰难。必须利用其他方法来实现DBMS非常有效地完成的工作。 如果你决定使用函数,应该保证做好代码注释,以便以后你(或其他人)能确切地知道所编写SQL代码的含义。

    使用函数

    文本处理函数
    • Upper()函数 将文本转换为大写
      输入:SELECT UPPER('aaa')
      输出:


      image.png
    常用的文本处理函数
    函数 说明 举例
    left(str,num) 返回错左边的字符 SELECT LEFT('AABBCCDD',2)
    length() 返回串的长度 SELECT LENGTH('AABBCCDDEEFFGG')
    locate() 返回串的子串 select LOCATE('aa','AABBccaa',2)
    lower() 将串转换为小写 SELECT LOWER('AABBCCDD')
    UPPER() 将串转换为大写 SELECT UPPER('aaa')
    LTRim() 去掉串左边的空格
    RTrim() 去掉串右边的空格
    Trim() 去掉串两边的空格
    日期和时间处理函数
    函数 说明 举例
    CURDATE() 返回当前日期 select CURDATE()
    CURTIME() 返回当前时间 select CURTIME()
    Now() 返回当前日期和时间
    Date() 返回日期时间的日期部分 select Date('2023-08-07 00:00:00')
    DAY() 返回一个日期的天数部分 select DAY('2023-08-07 00:00:00')
    DayOfWeek() 对于一个日期,返回对应的星期几
    Month() 返回一个日期的月份部分
    Hour() 返回一个时间的小时部分
    Minute() 返回一个时间的分钟部分
    Second() 返回一个时间的秒部分
    DateDiff() 计算两个日期之差 select DateDiff('2023-08-07 00:00:00','2023-08-15 00:00:00')
    Date_Add() 高度灵活的日期运算函数 SELECT DATE_ADD('2023-01-01', INTERVAL 2 MONTH 3 DAY);
    Now() 返回当前日期和时间
    Time() 返回一个日期时间的时间部分
    Year() 返回一个日期的年份部分
    举例:
    • 输入:select * from order where order_date='2005-09-01'
    • 输出: image.png

    分析: 使用WHERE order_date = '2005-09-01'可靠吗?order_ date的数据类型为datetime。这种类型存储日期及时间值。样例表中的值全都具有时间值00:00:00,但实际中很可能并不总是这样。如果用当前日期和时间存储订单日期(因此你不仅知道订单日期,还知道下订单当天的时间),怎么办?比如,存储的order_date值为
    2005-09-01 11:30:05,则WHERE order_date = '2005-09-01'失败。即使给出具有该日期的一行,也不会把它检索出来,因为WHERE匹配失败。解决办法是指示MySQL仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较。为此,必须使用Date()函数

    • 输入:select * from order where date(order_date)='2005-09-01'
    • 输出: image.png

    分析:使用Date()是一个良好的习惯,即使你知道相应的列只包含日期也是如此。这样,如果由于某种原因表中以后有日期和时间值,你的SQL代码也不用改变。当然,也存在一个Time()函数,在你只想要时间时应该使用它。

    • 输入:select * from order where Year(order_date)='2005' and Month(order_date)=9

    分析: Year()是一个从日期(或日期时间)中返回年份的函数。类似,Month()从日期中返回月份。因此,WHEREYear(order_date)= 2005 AND Month(order_date) = 9检索出order_date为2005年9月的所有行。

    数值处理函数

    函数 说明
    Abs() 返回一个数的绝对值
    Cos() 返回一个角度的余弦
    Exp() 返回一个数的指数值
    Mod() 返回除操作的余数
    Pi() 返回圆周率
    Rand() 返回一个随机数
    Sin() 返回一个角度的正弦
    Sqrt() 返回一个数的平方根
    Tan() 返回一个角度的正切

    相关文章

      网友评论

          本文标题:Mysql第十一章数据处理函数

          本文链接:https://www.haomeiwen.com/subject/hmpskjtx.html