Heim  >  Artikel  >  Datenbank  >  mysql内置函数大全_MySQL

mysql内置函数大全_MySQL

PHP中文网
PHP中文网Original
2016-05-27 13:46:321617Durchsuche

mysql 字符串函数用法集合

 

ASCII(str)

返回字符串str的最左面字符的ASCII代码值。

mysql> select ascii('d');
+------------+
| ascii('d') |
+------------+
| 100 |
 
+------------+
 
1 row in set (0.00 sec)
 
mysql> select ascii('dx');
+-------------+
| ascii('dx') |
+-------------+
| 100 |
+-------------+
1 row in set (0.00 sec)
 
mysql> select ascii('2');
 
+------------+
| ascii('2') |
+------------+
| 50 |
+------------+
1 row in set (0.00 sec)
 
mysql> select ascii(2);
+----------+
| ascii(2) |
+----------+
| 50 |
+----------+
1 row in set (0.00 sec)
 
mysql> select ascii(0);
+----------+
| ascii(0) |
+----------+
| 48 |
+----------+
1 row in set (0.00 sec)
 
mysql> select ascii(' ');
+------------+
| ascii(' ') |
+------------+
| 32 |
+------------+
1 row in set (0.00 sec)

 

如果str是空字符串,返回0。

mysql> select ascii('');
+-----------+
| ascii('') |
+-----------+
| 0 |
+-----------+
1 row in set (0.00 sec)

 

如果str是NULL,返回NULL。

mysql> select ascii(null);
+-------------+
| ascii(null) |
+-------------+
| NULL |
+-------------+

 

也可参见ORD()函数。

ORD(str)

如果字符串str最左面字符是一个多字节字符,通过以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与ASCII()函数返回的相同值。

mysql> select ORD('2');
-> 50
 
CONV(N,from_base,to_base)

在不同的数字基之间变换数字。返回数字N的字符串数字,从from_base基变换为to_base基,如果任何参数是NULL,返回NULL。参数N解释为一个整数,但是可以指定为一个整数或一个字符串。最小基是2且最大的基是36。如果to_base是一个负数,N被认为是一个有符号数,否则,N被当作无符号数。 CONV以64位点精度工作。

mysql> select CONV("a",16,2);
-> '1010'
mysql> select CONV("6E",18,8);
-> '172'
mysql> select CONV(-17,10,-18);
-> '-H'
mysql> select CONV(10+"10"+'10'+0xa,10,10);
-> '40'

 

BIN(N)

返回二进制值N的一个字符串表示,在此N是一个长整数(BIGINT)数字,这等价于CONV(N,10,2)。如果N是NULL,返回NULL。

mysql> select BIN(12);
-> '1100'
OCT(N)

返回八进制值N的一个字符串的表示,在此N是一个长整型数字,这等价于CONV(N,10,8)。如果N是NULL,返回NULL。

mysql> select OCT(12);
-> '14'

 

HEX(N)

返回十六进制值N一个字符串的表示,在此N是一个长整型(BIGINT)数字,这等价于CONV(N,10,16)。如果N是NULL,返回

NULL。
mysql> select HEX(255);
-> 'FF'

 

CHAR(N,...)

CHAR()将参数解释为整数并且返回由这些整数的ASCII代码字符组成的一个字符串。NULL值被跳过。

mysql> select CHAR(77,121,83,81,'76');
-> 'MySQL'
mysql> select CHAR(77,77.3,'77.3');
-> 'MMM'

 

CONCAT(str1,str2,...)

返回来自于参数连结的字符串。

可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。

mysql> select concat(123);
+-------------+
| concat(123) |
+-------------+
| 123 |
+-------------+
1 row in set (0.00 sec)
 
mysql> select concat('123');
+---------------+
| concat('123') |
+---------------+
| 123 |
+---------------+
1 row in set (0.00 sec)
 
mysql> select concat('123',321);
+-------------------+
| concat('123',321) |
+-------------------+
| 123321 |
+-------------------+
1 row in set (0.00 sec)
 
mysql> select concat('abc','cba');
+---------------------+
| concat('abc','cba') |
+---------------------+
| abccba |
+---------------------+
1 row in set (0.00 sec)
 
mysql> select concat('null','cba');
+----------------------+
| concat('null','cba') |
+----------------------+
| nullcba |
+----------------------+
1 row in set (0.00 sec)
 
mysql> select concat(3.1415,'cba');
+----------------------+
| concat(3.1415,'cba') |
+----------------------+
| 3.1415cba |
+----------------------+
1 row in set (0.00 sec)

 

如果任何参数是NULL,返回NULL。

mysql> select concat(null,'cba');
+--------------------+
| concat(null,'cba') |
+--------------------+
| NULL |
+--------------------+
1 row in set (0.00 sec)
 
LENGTH(str)
mysql> select length(123);
+-------------+
| length(123) |
+-------------+
| 3 |
+-------------+
1 row in set (0.00 sec)
 
mysql> select length('123');
+---------------+
| length('123') |
+---------------+
| 3 |
+---------------+
1 row in set (0.00 sec)
 
mysql> select length('abc');
+---------------+
| length('abc') |
+---------------+
| 3 |
+---------------+
1 row in set (0.00 sec) 
OCTET_LENGTH(str)
 
CHAR_LENGTH(str)
 
CHARACTER_LENGTH(str)

返回字符串str的长度。

mysql> select LENGTH('text');
-> 4
mysql> select OCTET_LENGTH('text');
-> 4

注意,对于多字节字符,其CHAR_LENGTH()仅计算一次。

 

LOCATE(substr,str)

在字符串str中查出substr首先出现的位置

mysql> select locate(1,123);
+---------------+
| locate(1,123) |
+---------------+
| 1 |
+---------------+
1 row in set (0.00 sec)
 
mysql> select locate('1',123);
+-----------------+
| locate('1',123) |
+-----------------+
| 1 |
+-----------------+
1 row in set (0.00 sec)
 
mysql> select locate(1,'123');
+-----------------+
| locate(1,'123') |
+-----------------+
| 1 |
+-----------------+
1 row in set (0.00 sec)
 
mysql> select locate('1','123');
+-------------------+
| locate('1','123') |
+-------------------+
| 1 |
+-------------------+
1 row in set (0.00 sec)
 
mysql> select locate('2','123');
+-------------------+
| locate('2','123') |
+-------------------+
| 2 |
+-------------------+
1 row in set (0.00 sec)
 
mysql> select locate('23','123');
+--------------------+
| locate('23','123') |
+--------------------+
| 2 |
+--------------------+
1 row in set (0.00 sec)
 
mysql> select locate('4','123');
+-------------------+
| locate('4','123') |
+-------------------+
| 0 |
+-------------------+
1 row in set (0.00 sec)

 

LOCATE(substr,str,pos)

返回子串substr在字符串str第一个出现的位置,从位置pos开始。

如果substr不是在str里面,返回0。

这函数是多字节可靠的

mysql> select locate(1,2323123123,0);
+------------------------+
| locate(1,2323123123,0) |
+------------------------+
| 0 |
+------------------------+
1 row in set (0.02 sec)
 
mysql> select locate(1,2323123123,1);
+------------------------+
| locate(1,2323123123,1) |
+------------------------+
| 5 |
+------------------------+
1 row in set (0.00 sec)
 
mysql> select locate(1,2323123123,5);
+------------------------+
| locate(1,2323123123,5) |
+------------------------+
| 5 |
+------------------------+
1 row in set (0.00 sec)
 
mysql> select locate(1,2323123123,6);
+------------------------+
| locate(1,2323123123,6) |
+------------------------+
| 8 |
+------------------------+
1 row in set (0.00 sec)
 
POSITION(substr IN str)

返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0。

该函数是多字节可靠的。

mysql> select position( 1 in 123);
+---------------------+
| position( 1 in 123) |
+---------------------+
| 1 |
+---------------------+
1 row in set (0.03 sec)
 
mysql> select position( 4 in 123);
+---------------------+
| position( 4 in 123) |
+---------------------+
| 0 |
+---------------------+
1 row in set (0.00 sec)
 
mysql> select position( '4' in '123');
+-------------------------+
| position( '4' in '123') |
+-------------------------+
| 0 |
+-------------------------+
1 row in set (0.00 sec)
 
mysql> select position( '2' in '123');
+-------------------------+
| position( '2' in '123') |
+-------------------------+
| 2 |
+-------------------------+
1 row in set (0.00 sec)
 
INSTR(str,substr)

 

返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。

这函数是多字节可靠的。

mysql> select instr(123,1);
+--------------+
| instr(123,1) |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
 
mysql> select instr(1,123);
+--------------+
| instr(1,123) |
+--------------+
| 0 |
+--------------+
1 row in set (0.00 sec)

 

LPAD(str,len,padstr)

返回字符串str,左面用字符串padstr填补直到str是len个字符长。

mysql> select LPAD('hi',4,'??');
-> '??hi'

 

RPAD(str,len,padstr)

返回字符串str,右面用字符串padstr填补直到str是len个字符长。

mysql> select RPAD('hi',5,'?');
-> 'hi???'
LEFT(str,len)

返回字符串str的最左面len个字符。

mysql> select LEFT('foobarbar', 5);
-> 'fooba'

该函数是多字节可靠的。

RIGHT(str,len)

返回字符串str的最右面len个字符。

mysql> select RIGHT('foobarbar', 4);
-> 'rbar'

该函数是多字节可靠的。

SUBSTRING(str,pos,len)
 
SUBSTRING(str FROM pos FOR len)
 
MID(str,pos,len)

 

从字符串str返回一个len个字符的子串,从位置pos开始。使用FROM的变种形式是ANSI SQL92语法。

mysql> select SUBSTRING('Quadratically',5,6);
-> 'ratica'

 

该函数是多字节可靠的。

SUBSTRING(str,pos)
 
SUBSTRING(str FROM pos)

 

从字符串str的起始位置pos返回一个子串。

mysql> select SUBSTRING('Quadratically',5);
-> 'ratically'
mysql> select SUBSTRING('foobarbar' FROM 4);
-> 'barbar'

 

该函数是多字节可靠的。

SUBSTRING_INDEX(str,delim,count)

 

返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。

mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'

 

该函数对多字节是可靠的。

LTRIM(str)

 

返回删除了其前置空格字符的字符串str。

mysql> select LTRIM(' barbar');
-> 'barbar'
RTRIM(str)

 

返回删除了其拖后空格字符的字符串str。

mysql> select RTRIM('barbar ');
-> 'barbar'

 

该函数对多字节是可靠的。

TRIM([[BOTH | LEA
 
DING | TRAILING] [remstr] FROM] str)

 

返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果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'

 

该函数对多字节是可靠的。

 

SOUNDEX(str)

 

返回str的一个同音字符串。听起来“大致相同”的2个字符串应该有相同的同音字符串。一个“标准”的同音字符串长是4个字符,但是SOUNDEX()函数返回一个任意长的字符串。你可以在结果上使用SUBSTRING()得到一个“标准”的 同音串。所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字符国际字母被当作元音。

mysql> select SOUNDEX('Hello');
-> 'H400'
mysql> select SOUNDEX('Quadratically');
-> 'Q36324'

 

SPACE(N)

返回由N个空格字符组成的一个字符串。

mysql> select SPACE(6);
-> ' '
 
REPLACE(str,from_str,to_str)

 

返回字符串str,其字符串from_str的所有出现由字符串to_str代替。

mysql> select REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'

 

该函数对多字节是可靠的。

REPEAT(str,count)

 

返回由重复countTimes次的字符串str组成的一个字符串。如果count 072b3ed46d1a9a9edb17a1f842d06a24 select QUARTER('98-04-01'); 

-> 2

 

WEEK(date) 

  

WEEK(date,first) 

 

对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。 

mysql> select WEEK('1998-02-20'); 

-> 7 

mysql> select WEEK('1998-02-20',0); 

-> 7 

mysql> select WEEK('1998-02-20',1); 

-> 8

 

YEAR(date) 

 

返回date的年份,范围在1000到9999。 

mysql> select YEAR('98-02-03'); 

-> 1998

 

HOUR(time) 

 

返回time的小时,范围是0到23。 

mysql> select HOUR('10:05:03'); 

-> 10

 

MINUTE(time) 

 

返回time的分钟,范围是0到59。 

mysql> select MINUTE('98-02-03 10:05:03'); 

-> 5

 

SECOND(time) 

 

回来time的秒数,范围是0到59。 

mysql> select SECOND('10:05:03'); 

-> 3

 

PERIOD_ADD(P,N) 

 

增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。 

mysql> select PERIOD_ADD(9801,2); 

-> 199803

 

PERIOD_DIFF(P1,P2) 

 

返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。

mysql> select PERIOD_DIFF(9802,199703); 

-> 11

 

DATE_ADD(date,INTERVAL expr type) 

  

DATE_SUB(date,INTERVAL expr type) 

  

ADDDATE(date,INTERVAL expr type) 

  

SUBDATE(date,INTERVAL expr type) 

 

这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。

 

在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期中返回“type”间隔。下表显示了type和expr参数怎样被关联: type值 含义 期望的expr格式 

SECOND 秒 SECONDS 

MINUTE 分钟 MINUTES 

HOUR 时间 HOURS 

DAY 天 DAYS 

MONTH 月 MONTHS 

YEAR 年 YEARS 

MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS" 

HOUR_MINUTE 小时和分钟 "HOURS:MINUTES" 

DAY_HOUR 天和小时 "DAYS HOURS" 

YEAR_MONTH 年和月 "YEARS-MONTHS" 

HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS" 

DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES" 

DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

 

MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个DATETIME值。

 

mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; 

-> 1998-01-01 00:00:00 

mysql> SELECT INTERVAL 1 DAY + "1997-12-31"; 

-> 1998-01-01 

mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND; 

-> 1997-12-31 23:59:59 

mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 

INTERVAL 1 SECOND); 

-> 1998-01-01 00:00:00 

mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 

INTERVAL 1 DAY); 

-> 1998-01-01 23:59:59 

mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 

INTERVAL "1:1" MINUTE_SECOND); 

-> 1998-01-01 00:01:00 

mysql> SELECT DATE_SUB("1998-01-01 00:00:00", 

INTERVAL "1 1:1:1" DAY_SECOND); 

-> 1997-12-30 22:58:59 

mysql> SELECT DATE_ADD("1998-01-01 00:00:00", 

INTERVAL "-1 10" DAY_HOUR); 

-> 1997-12-30 14:00:00 

mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY); 

-> 1997-12-02 

mysql> SELECT EXTRACT(YEAR FROM "1999-07-02"); 

-> 1999 

mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); 

-> 199907 

mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); 

-> 20102

 

如果你指定太短的间隔值(不包括type关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值,MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,"1:10" DAY_SECOND以它等价于"1:10" MINUTE_SECOND的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。

 

mysql> select DATE_ADD('1998-01-30', Interval 1 month); 

-> 1998-02-28

 

注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。 

 

TO_DAYS(date) 

给出一个日期date,返回一个天数(从0年的天数)。 

mysql> select TO_DAYS(950501); 

-> 728779 

mysql> select TO_DAYS('1997-10-07'); 

-> 729669

 

TO_DAYS()

不打算用于使用格列高里历(1582)出现前的值。

 

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' 

MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。

 

TIME_FORMAT(time,format) 

这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。其他修饰符产生一个NULL值或0。 

 

CURDATE() 

  

CURRENT_DATE 

以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。

mysql> select CURDATE(); 

-> '1997-12-15' 

mysql> select CURDATE() + 0; 

-> 19971215

 

CURTIME() 

  

CURRENT_TIME 

以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。 

mysql> select CURTIME(); 

-> '23:50:26' 

mysql> select CURTIME() + 0; 

-> 235026

 

NOW() 

  

SYSDATE() 

  

CURRENT_TIMESTAMP 

以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用。 

mysql> select NOW(); 

-> '1997-12-15 23:50:26' 

mysql> select NOW() + 0; 

-> 19971215235026

 

UNIX_TIMESTAMP() 

  

UNIX_TIMESTAMP(date) 

如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。 

mysql> select UNIX_TIMESTAMP(); 

-> 882226357 

mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00'); 

-> 875996580 

当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

 

FROM_UNIXTIME(unix_timestamp) 

以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串还是或数字上下文中被使用。 

mysql> select FROM_UNIXTIME(875996580); 

-> '1997-10-04 22:23:00' 

mysql> select FROM_UNIXTIME(875996580) + 0; 

-> 19971004222300

 

FROM_UNIXTIME(unix_timestamp,format) 

返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。 

mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(), 

'%Y %D %M %h:%i:%s %x'); 

-> '1997 23rd December 03:43:30 x'

 

SEC_TO_TIME(seconds) 

返回seconds参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字上下文中被使用。 

mysql> select SEC_TO_TIME(2378); 

-> '00:39:38' 

mysql> select SEC_TO_TIME(2378) + 0; 

-> 3938

 

TIME_TO_SEC(time) 

返回time参数,转换成秒。 

mysql> select TIME_TO_SEC('22:23:00'); 

-> 80580 

mysql> select TIME_TO_SEC('00:39:38'); 

-> 2378

 

Mysql取系统函数:

 

Select curtime();

 

Select curdate():

 

Select sysdate():

select now();

 

MySQL的控制流程函数:

 

 

 

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THENresult [WHEN [condition] THEN result ...] [ELSE result] END

 

 

在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。

 

 

 

mysql> SELECT CASE 1 WHEN 1 THEN 'one'

 

 

 

-> WHEN 2 THEN 'two' ELSE 'more' END;

 

 

 

-> 'one'

 

 

 

mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;

 

 

 

-> 'true'

 

 

 

mysql> SELECT CASE BINARY 'B'

 

 

 

-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;

 

 

 

-> NULL

 

 

 

一个CASE表达式的默认返回值类型是任何返回值的相容集合类型,但具体情况视其所在语境而定。如果用在字符串语境中,则返回结果味字符串。如果用在数字语境中,则返回结果为十进制值、实值或整数值。

 

 

 

IF(expr1,expr2,expr3)

 

 

如果 expr1 是TRUE (expr1 a8093152e673feb7aba1828c43532094 0 and expr1 a8093152e673feb7aba1828c43532094 NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

 

 

 

mysql> SELECT IF(1>2,2,3);

 

 

 

-> 3

 

 

 

mysql> SELECT IF(195502ce2f835f4a257603fe5557fb952 'yes'

 

 

 

mysql> SELECT IF(STRCMP('test','test1'),'no','yes');

 

 

 

-> 'no'

 

 

 

如果expr2 或expr3中只有一个明确是 NULL,则IF() 函数的结果类型 为非NULL表达式的结果类型。

 

 

 

expr1 作为一个整数值进行计算,就是说,假如你正在验证浮点值或字符串值, 那么应该使用比较运算进行检验。

 

 

 

mysql> SELECT IF(0.1,1,0);

 

 

 

-> 0

 

 

 

mysql> SELECT IF(0.1a8093152e673feb7aba1828c435320940,1,0);

 

 

 

-> 1

 

 

 

在所示的第一个例子中,IF(0.1)的返回值为0,原因是 0.1 被转化为整数值,从而引起一个对 IF(0)的检验。这或许不是你想要的情况。在第二个例子中,比较检验了原始浮点值,目的是为了了解是否其为非零值。比较结果使用整数。

 

 

 

IF() (这一点在其被储存到临时表时很重要 ) 的默认返回值类型按照以下方式计算:

 

 

 

表达式

 

返回值

 

expr2 或expr3 返回值为一个字符串。

 

字符串

 

expr2 或expr3 返回值为一个浮点值。

 

浮点

 

expr2 或 expr3 返回值为一个整数。

 

整数

 

 

 

假如expr2 和expr3 都是字符串,且其中任何一个字符串区分大小写,则返回结果是区分大小写。

 

 

 

IFNULL(expr1,expr2)

 

 

假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

 

 

 

mysql> SELECT IFNULL(1,0);

 

 

 

-> 1

 

 

 

mysql> SELECT IFNULL(NULL,10);

 

 

 

-> 10

 

 

 

mysql> SELECT IFNULL(1/0,10);

 

 

 

-> 10

 

 

 

mysql> SELECT IFNULL(1/0,'yes');

 

 

 

-> 'yes'

 

 

 

IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、 REAL或 INTEGER。假设一个基于表达式的表的情况, 或MySQL必须在内存储器中储存一个临时表中IFNULL()的返回值:

 

 

 

CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;

 

 

 

在这个例子中,测试列的类型为 CHAR(4)。

 

 

 

NULLIF(expr1,expr2)

 

 

如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为 expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。

 

mysql> SELECT NULLIF(1,1);
 
 
 
-> NULL
 
 
 
mysql> SELECT NULLIF(1,2);
 
 
 
-> 1

 

 

注意,如果参数不相等,则 MySQL 两次求得的值为 expr1 。

以上就是mysql内置函数大全_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:mysql主从同步_MySQLNächster Artikel:Fedora安装mysql数据库_MySQL