mysql 内置函数
mysql 内置函数一、字符串函数
ASCII(str)
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
BIT_LENGTH(str)
返回字符串的比特长度
CONCAT(s1,s2...,sn)
1、将s1,s2...,sn连接成字符串
2、如果任何一个参数是NULL,返回NULL。可以有超过2个的参数。
3、一个数字参数被变换为等价的字符串形式。
mysql> select CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> select CONCAT('My', NULL, 'QL');
-> NULL
mysql> select CONCAT(14.3);
-> '14.3'
CONCAT_WS(separator ,str1 ,str2 ,...)
1、将s1,s2...,sn连接成字符串,并用sep字符间隔
2、CONCAT_WS() 代表 CONCAT With Separator ,是 CONCAT() 的特殊形式。
3、分隔符可以是一个字符串,也可以是其它参数。
4、如果分隔符为 NULL ,则结果为 NULL 。
INSERT(str,x,y,instr)
将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
mysql> select INSERT('Quadratic', 3, 4, 'What');
-> 'QuWhattic'
FIND_IN_SET(str,list)
1、分析逗号分隔的list列表,如果发现str,返回str在list中的位置
2、如果str不是在strlist里面或如果strlist是空字符串,返回0。
3、如果任何一个参数是NULL,返回NULL。
4、如果第一个参数包含一个“,”,该函数将工作不正常。
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
LCASE(str)或LOWER(str)
返回将字符串str中所有字符改变为小写后的结果
mysql> select LCASE('QUADRATICALLY');
-> 'quadratically'
UCASE(str)或UPPER(str)
返回将字符串str中所有字符转变为大写后的结果
LEFT(str,x)
返回字符串str中最左边的x个字符
mysql> select LEFT('foobarbar', 5);
-> 'fooba'
mysql> select RIGHT('foobarbar', 4);
-> 'rbar'
LENGTH(s)
返回字符串str中的字符数
mysql> select LTRIM(' barbar');
-> 'barbar'
mysql> select RTRIM('barbar ');
-> 'barbar'
POSITION(substr,str)
1、返回子串substr在字符串str中第一次出现的位置
2、如果substr不是在str里面,返回0.
mysql> select LOCATE('bar', 'foobarbar');
-> 4
mysql> select LOCATE('xbar', 'foobar');
-> 0
QUOTE(str)
1、用反斜杠转义str中的单引号
2、如果自变量的值为NULL, 则返回不带单引号的单词 “NULL” 。
REPEAT(str,srchstr,rplcstr)
1、返回字符串str重复x次的结果
2、如果count <= 0,返回一个空字符串。
3、如果str或count是NULL,返回NULL。
mysql> select REPEAT('MySQL', 3);
-> 'MySQLMySQLMySQL'
REVERSE(str)
返回颠倒字符串str的结果
mysql> select REVERSE('abc');
-> 'cba'
STRCMP(s1,s2)
比较字符串s1和s2
1、返回字符串str,其所有remstr前缀或后缀被删除了。
2、如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。
3、如果remstr没被指定,空格被删除。
mysql> select TRIM(' bar ');
-> 'bar'
mysql> select TRIM(LEADING 'x' FROM 'xxxbarxxx');
-> 'barxxx'
mysql> select TRIM(BOTH 'x' FROM 'xxxbarxxx');
-> 'bar'
mysql> select TRIM(TRAILING 'xyz' FROM 'barxxyz');
-> 'barx'
REPLACE(str,from_str,to_str)
将str字符串中所有的from_str
由字符串to_str
代替,然后返回str.
mysql> select REPLACE('wwwcom', 'w', 'Ww');
-> 'WwWwWwcom'
mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 2
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 0
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
-> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
-> 'foo'
LOAD_FILE(file_name)
1、读入文件并且作为一个字符串返回文件内容。
2、文件必须在服务器上,你必须指定到文件的完整路径名,而且你必须有file权限。
3、文件必须所有内容都是可读的并且小于max_allowed_packet。
4、如果文件不存在或由于上面原因之一不能被读出,函数返回NULL。
二、日期和时间函数
DAYOFWEEK(date)
返回日期date
的星期索引(1
=星期天,2
=星期一, ……7
=星期六)。这些索引值对应于ODBC标准。
mysql> select DAYOFWEEK('1998-02-03');
-> 3
WEEKDAY(date)
返回date
的星期索引(0
=星期一,1
=星期二, ……6
= 星期天)。
DAYOFMONTH(date)
返回date
的月份中日期,在1
到31
范围内。
DAYOFYEAR(date)
返回date
在一年中的日数, 在1
到366
范围内。
MONTH(date)
返回
date
的月份,范围1
到12
。
DAYNAME(date)
返回
date
的星期名字。
MONTHNAME(date)
返回
date
的月份名字。
QUARTER(date)
返回
date
一年中的季度,范围1
到4
。
WEEK(date)
WEEK(date,first)
1、对于星期天是一周的第一天的地方,有一个单个参数,返回
date
的周数,范围在0
到52
。2、2个参数形式
WEEK()
允许你指定星期是否开始于星期天或星期一。3、如果第二个参数是
0
,星期从星期天开始,如果第二个参数是1
,从星期一开始。
YEAR(date)
返回
date
的年份,范围在1000
到9999
。
HOUR(time)
返回
time
的小时,范围是0
到23
。
MINUTE(time)
返回
time
的分钟,范围是0
到59
。
SECOND(time)
回来
time
的秒数,范围是0
到59
。
PERIOD_ADD(P,N)
增加
N
个月到阶段P
(以格式YYMM
或YYYYMM
)。以格式YYYYMM
返回值。注意阶段参数P
不是日期值。
PERIOD_DIFF(P1,P2)
返回在时期
P1
和P2
之间月数,P1
和P2
应该以格式YYMM
或YYYYMM
。注意,时期参数P1
和P2
不是日期值。
TO_DAYS(date)
给出一个日期
date
,返回一个天数(从0年的天数)。
FROM_DAYS(N)
给出一个天数
N
,返回一个DATE
值。
mysql> select FROM_DAYS(729669);
-> '1997-10-07'
DATE_FORMAT(date,format)
根据format
字符串格式化date
值。下列修饰符可以被用在format
字符串中:
%M |
月名字(January ……December ) |
%W |
星期名字(Sunday ……Saturday ) |
%D |
有英语前缀的月份的日期(1st , 2nd , 3rd , 等等。) |
%Y |
年, 数字, 4 位 |
%y |
年, 数字, 2 位 |
%a |
缩写的星期名字(Sun ……Sat ) |
%d |
月份中的天数, 数字(00 ……31 ) |
%e |
月份中的天数, 数字(0 ……31 ) |
%m |
月, 数字(01 ……12 ) |
%c |
月, 数字(1 ……12 ) |
%b |
缩写的月份名字(Jan ……Dec ) |
%j |
一年中的天数(001 ……366 ) |
%H |
小时(00 ……23 ) |
%k |
小时(0 ……23 ) |
%h |
小时(01 ……12 ) |
%I |
小时(01 ……12 ) |
%l |
小时(1 ……12 ) |
%i |
分钟, 数字(00 ……59 ) |
%r |
时间,12 小时(hh:mm:ss [AP]M ) |
%T |
时间,24 小时(hh:mm:ss ) |
%S |
秒(00 ……59 ) |
%s |
秒(00 ……59 ) |
%p |
AM 或PM |
%w |
一个星期中的天数(0 =Sunday ……6 =Saturday ) |
%U |
星期(0 ……52 ), 这里星期天是星期的第一天 |
%u |
星期(0 ……52 ), 这里星期一是星期的第一天 |
%% |
一个文字“%”。 |
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%D %y %a %d %m %b %j');
-> '4th 97 Sat 04 10 Oct 277'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
TIME_FORMAT(time,format)
和DATE_FORMAT()
函数一样使用,但是format
字符串只能包含处理小时、分钟和秒的那些格式修饰符。其他修饰符产生一个NULL
值或0
。
CURDATE()
以'YYYY-MM-DD'
或YYYYMMDD
格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。
mysql> select CURDATE();
-> '1997-12-15'
mysql> select CURDATE() + 0;
-> 19971215
CURTIME()
以'HH:MM:SS'
或HHMMSS
格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。
mysql> select CURTIME();
-> '23:50:26'
mysql> select CURTIME() + 0;
-> 235026
NOW()
以'YYYY-MM-DD HH:MM:SS'
或YYYYMMDDHHMMSS
格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用。
mysql> select NOW();
-> '1997-12-15 23:50:26'
mysql> select NOW() + 0;
-> 19971215235026
三、数学函数
所有的数学函数在一个出错的情况下返回NULL
。
ABS(X)
返回X
的绝对值。
SIGN(X)
返回参数的符号,为
-1
、0
或1
,取决于X
是否是负数、零或正数。
mysql> select SIGN(-32);
-> -1
mysql> select SIGN(0);
-> 0
mysql> select SIGN(234);
-> 1
MOD(N,M)
返回N
被M
除的余数。
mysql>