MySQL心得6--MySQL语言结构--函数(二)

2014-11-24 13:06:33 · 作者: · 浏览: 1
是varchar类型。
例: 如下程序在一列中返回XS表中所有女同学的姓氏,在另一列中返回名字。
USEXSCJ;SELECT SUBSTRING(姓名,1,1) AS 姓, SUBSTRING(姓名, 2,LENGTH(姓名)-1) AS 名
FROM XS WHERE 性别=0 ORDER BY 姓名;
说明:LENGTH函数的作用是返回一个字符串的长度。
(9)STRCMP函数
语法格式: strcmp (s1,s2)
STRCMP函数用于比较两个字符串,相等返回0,s1大于s2返回1,s1小于s2返回-1。
例: 执行如下语句: SELECT STRCMP('A', 'A'), STRCMP('ABC', 'OPQ'),STRCMP('T', 'B');
结果为:0,-1,1;
4. 日期和时间函数
MySQL有很多日期和时间数据类型,所以有相当多的操作日期和时间的函数。
(1)NOW()
使用NOW()函数可以获得当前的日期和时间,它以YYYY-MM-DD HH∶MM∶SS的格式返回当前的日期和时间:
(2)CURTIME()和CURDATE()
curtime()和curdate()函数比NOW更为具体化,它们分别返回的是当前的时间和日期,没有参数:
(3)YEAR()
YEAR()函数分析一个日期值并返回其中关于年的部分:
SELECTYEAR(20080512142800),YEAR('1982-11-02');
结果为:2008,1982;
(4)MONTH()和MONTHNAME()
month()和monthname()函数分别以数值和字符串的格式返回月的部分:
(5)DAYOFYEAR(),DAYOFWEEK()和DAYOFMONTH()
dayofyear(),DAYOFWEEK()和DAYOFMONTH()函数分别返回这一天在一年、一星期及一个月中的序数:
(6)DAYNAME()
和MONTHNAME()相似,dayname()以字符串形式返回星期名:
(7)WEEK()和YEARWEEK()
WEEK()函数返回指定的日期是一年的第几个星期,而YEARWEEK()函数返回指定的日期是哪一年的哪一个星期:
(8)HOUR()、MINUTE()和SECOND()
HOUR(),MINUTE()和SECOND()函数分别返回时间值的小时、分钟和秒的部分:
(9)DATE_ADD()和DATE_SUB()
DATE_ADD()和DATE_SUB()函数可以对日期和时间进行算术操作,它们分别用来增加和减少日期值,其使用的关键字如下表所示。
关 键 字
间隔值的格式
关 键 字
间隔值的格式
DAY
日期
MINUTE
分钟
DAY_HOUR
日期∶小时
MINUTE_ SECOND
分钟∶秒
DAY_MINUTE
日期∶小时∶分钟
MONTH
DAY_SECOND
日期∶小时∶分钟∶秒
SECOND
HOUR
小时
YEAR
HOUR_MINUTE
小时∶分钟
YEAR_MONTH
年-月
HOUR_ SECOND
小时∶分钟∶秒
DATE_ADD()和DATE_SUB()函数的语法格式为:
DATE_ADD | DATE_SUB(date, INTERVAL int keyword)
date是需要的日期和时间,INTERVAL关键字表示一个时间间隔。int表示需要计算的时间值,keyword已经在上表中列出。DATE_ADD函数是计算date加上间隔时间后的值,DATE_SUB则是计算date减去时间间隔后的值。
举例: SELECT DATE_ADD('1986-08-08',INTERVAL 17 DAY);
5. 加密函数(非重点)
MySQL特意设计了一些函数对数据进行加密。这里简单介绍如下几个函数。
(1)AES_ENCRYPT和AES_DECRYPT函数
语法格式为:aes_encrypt aes_decrypt(str,key)
AES_ENCRYPT函数返回的是密钥key对字符串str利用高级加密标准(AES)算法加密后的结果,结果是一个二进制的字符串,以BLOB类型存储。而AES_DECRYPT函数用于对用高级加密方法加密的数据进行解密。若检测到无效数据或不正确的填充,函数会返回NULL。AES_ENCRYPT和AES_DECRYPT函数可以被看做MySQL中普遍使用的最安全的加密函数。
(2)ENCODE和DECODE函数
语法格式为: encode |deCODE(str,key)
ENCODE函数用来对一个字符串str进行加密,返回的结果是一个二进制字符串,以BLOB类型存储。DECODE函数使用正确的密钥对加密后的值进行解密。与上面的AES_ENCRYPT和AES_DECRYPT函数相比,这两个函数加密程度相对较弱。
(3)ENCRYPT函数
使用UNIX crypt() 系统加密字符串,encrypt(str,salt)函数接收要加密的字符串和用于加密过程的salt(一个可以确定唯一口令的字符串)。在Windows上不可用。
(4)PASSWORD函数
格式为: password(str)
返回字符串str加密后的密码字符串,适合于插入到MySQL的安全系统。该加密过程不可逆,和UNIX密码加密过程使用不同的算法。主要用于MySQL的认证系统。
例: 返回字符串“MySQL”的加密版本。
SELECTPASSWORD('MySQL');
6. 控制流函数
MySQL有几个函数是用来进行条件操作的。这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台。
(1)IFNULL和NULLIF函数
IFNULL函数的语法格式为: IFNULL(expr1,expr2)
此函数的作用是:判断参数expr1是否为NULL,当参数expr1为NULL时返回expr2,不为NULL时返回expr1。IFNULL的返回值是数字或字符串。
例: 执行如下语句: