2.3.3 MySQL中的内置函数
MySQL中的内置函数很多,本章只对常用的一些函数做简单介绍。
1. 字符串函数
MySQL中的字符串函数包括ASCII、CHAR、CHAR_LENGTH、CONCAT、ELT、LEFT等。
● ASCII(str):返回值为字符串str 的最左字符的数值。假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。例如SELECT ASCII('2')的返回值为50。
● CHAR(N,... [USING charset]):CHAR()将每个参数N理解为一个整数,其返回值为一个包含这些整数的代码值所给出的字符的字符串。NULL值被省略。例如 SELECT CHAR(77,121,83,81,'76')的返回值为'MySQL'。
● CHAR_LENGTH(str):返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。对于一个包含5个2字节字符的字符串, LENGTH()返回值为10,而CHAR_LENGTH()的返回值为5。
● CONCAT(str1,str2,...):返回结果为连接参数产生的字符串。如SELECT CONCAT('My', 'S', 'QL')的返回值为'MySQL'。
● ELT(N,str1,str2,str3,...):若N = 1,则返回值为str1,若N = 2,则返回值为str2,以此类推。若N 小于1或大于参数的数目,则返回值为 NULL 。 ELT() 是 FIELD()的补数。如SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo')的返回值为'ej'。
● LEFT(str,len):返回从字符串str开始的len最左字符。如SELECT LEFT('foobarbar', 5)的返回值为'fooba'。
● LENGTH(str):返回值为字符串str 的长度,单位为字节。一个多字节字符算作多字节。这意味着对于一个包含5个2字节字符的字符串,LENGTH() 的返回值为 10,而CHAR_LENGTH()的返回值则为5。如SELECT LENGTH('text')的返回值为4。
● LOCATE(substr,str):返回字符串 str中子字符串substr的第一个出现位置。如果substr不在str中,则返回值为0。如SELECT LOCATE('bar', 'foobarbar')的返回值为4。
● LOCATE(substr,str,pos):返回字符串 str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。如SELECT LOCATE('bar', 'foobarbar',5)的返回值为7。
● LOWER(str):返回字符串str以及所有根据最新的字符集映射表变为小写字母的字符(默认为cp1252 Latin1)。如SELECT LOWER('GOAWAY')的返回值为 'goaway'。
● UPPER(str):返回字符串str, 以及所有根据最新的字符集映射表转变为大写字母的字符(默认为cp1252 Latin1)。如SELECT UPPER('goaway')的返回值为'GOAWAY '。
● LTRIM(str):返回字符串str,其引导空格字符被删除。如SELECT LTRIM(' barbar')的返回值为'barbar'。
● REPEAT(str,count):返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count。 若 count <= 0,则返回一个空字符串。若str 或 count 为 NULL,则返回 NULL。如SELECT REPEAT('SQL Server', 3)的返回值为'SQL Server SQL Server SQL Server '。
2. 数值函数
MySQL中的数值函数包括ABS(X)、ACOS(X)、ASIN(X)、CEILING(X) CEIL(X)、EXP(X)、FLOOR(X)等。详细内容如下所示。
● ABS(X):返回X的绝对值。如SELECT ABS(2)的返回值为2。
● ACOS(X):返回X反余弦,即余弦是X的值。若X不在–1~1的范围之内,则返回NULL。如SELECT ACOS(1)的返回值为0。
● ASIN(X):返回X 的反正弦,即正弦为X 的值。若X不在–1~1的范围之内,则返回 NULL。如SELECT ASIN(0.2)的返回值为0.201 357 920 790 33。
● CEILING(X) CEIL(X) :返回不小于X 的最小整数值。例如SELECT CEILING(1.23)的返回值为2。 这两个函数的意义相同。注意返回值会被转化为一个BIGINT。
● EXP(X) :返回e的X乘方后的值(自然对数的底)。例如SELECT EXP(2)的返回值为7.389 056 098 930 7。
● FLOOR(X) :返回不大于X的最大整数值。例如SELECT FLOOR(1.23)的返回值为1。
上面列出的只是MySQL中数值函数很小的一部分,如果有兴趣请参看MySQL的中文文档。
3. 日期和时间函数
MySQL中的日期和时间函数包括ADDTIME、CURDATE、CURTIME、DATE、DATEDIFF、DAYOFYEAR、FROM_DAY、MAKEDATE。其详细内容如下所示。
● ADDTIME(expr,expr2):ADDTIME()将expr2添加至expr 然后返回结果。 expr 是一个时间或时间日期表达式,而expr2 是一个时间表达式。例如SELECT ADDTIME('01:00:00.999999', '02:00:00.999998')的返回值为'03:00:01.999997'。
● CURDATE():将当前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。例如SELECT CURDATE()的返回值为'1997-12-15'。
● CURTIME():将当前时间以'HH:MM:SS'或 HHMMSS 的格式返回,具体格式根据函数用在字符串或是数字语境中而定。例如SELECT CURTIME() 的返回值为'16:26:24'。
● DATE(expr):提取日期或时间日期表达式expr中的日期部分。例如SELECT DATE('2003-12-31 01:02:03')的返回值为'2003-12-31'。
● DATEDIFF(expr,expr2):返回起始时间 expr和结束时间expr2之间的天数。expr和expr2 为日期或date-and-time表达式。计算中只用到这些值的日期部分。 如SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30')的返回值为1。
● DAYOFYEAR(date):返回date 对应的一年中的天数,范围是1~366。如SELECT DAYOFYEAR('1998-02-03')的返回值为34。
● FROM_DAYS(N):给定一个天数N, 返回一个DATE值。如SELECT FROM_ DAYS(729 669)的返回值为'1997-10-07'。
● MAKEDATE(year,dayofyear):给出年份值和一年中的天数值,返回一个日期。dayofyear 必须大于 0 ,否则结果为 NULL。