MySQL單行函式
1、CONCAT(str1,str2,...)
返回來自於引數連結的字串。如果任何引數是NULL,返回NULL。可以有超過2個的引數。一個數字引數被變換為等價的字串形式。
select CONCAT('My', 'S', 'QL');--'MySQL'
select CONCAT('My', NULL, 'QL'); -> NULL
2、 LENGTH(str) 返回字串str的長度。
select LENGTH('text'); -> 4
3 、LOCATE(substr,str) 和 POSITION(substr IN str)
返回子串substr在字串str第一個出現的位置,如果substr不是在str裡面,返回0.
select LOCATE('bar', 'foobarbar'); -> 4
select LOCATE('xbar', 'foobar'); -> 0
LOCATE(substr,str,pos)
返回子串substr在字串str第一個出現的位置,從位置pos開始。如果substr不是在str裡面,返回0。
select LOCATE('bar', 'foobarbar',5); -> 7
4 、INSTR(str,substr)
返回子串substr在字串str中的第一個出現的位置。這與有2個引數形式的LOCATE()相同,除了引數 被顛倒。
select INSTR('foobarbar', 'bar'); -> 4
select INSTR('xbar', 'foobar');-> 0
5 、LPAD(str,len,padstr)
返回字串str,左面用字串padstr填補直到str是len個字元長。
mysql> select LPAD('hi',4,'??');
-> '??hi'
6、 RPAD(str,len,padstr)
返回字串str,右面用字串padstr填補直到str是len個字元長。
mysql> select RPAD('hi',5,'?');
-> 'hi???'
7、 LEFT(str,len)
返回字串str的最左面len個字元。
mysql> select LEFT('foobarbar', 5);
-> 'fooba'
8、 RIGHT(str,len)
返回字串str的最右面len個字元。
mysql> select RIGHT('foobarbar', 4);
-> 'rbar'
9、 SUBSTRING(str,pos,len)
從字串str返回一個len個字元的子串,從位置pos開始。使用FROM的變種形式是ANSI SQL92語法。
mysql> select SUBSTRING('Quadratically',5,6);
-> 'ratica'
10、 LTRIM(str)
返回刪除了其前置空格字元的字串str。
mysql> select LTRIM(' barbar');
-> 'barbar'
11、 RTRIM(str)
返回刪除了其拖後空格字元的字串str。
mysql> select RTRIM('barbar ');
-> 'barbar'
12 、TRIM(str)
mysql> select TRIM(' bar ');
-> 'bar'
13、 SPACE(N)
返回由N個空格字元組成的一個字串。
mysql> select SPACE(6);
-> ' '
14、 REPLACE(str,from_str,to_str)
返回字串str,其字串from_str的所有出現由字串to_str代替。
mysql> select REPLACE('www.mysql.com', 'w', 'x');
-> 'xxx.mysql.com'
15、 REPEAT(str,count)
返回由重複countTimes次的字串str組成的一個字串。如果count <= 0,返回一個空字串。如果str或count是NULL,返回NULL。
mysql> select REPEAT('MySQL', 3);
-> 'MySQLMySQLMySQL'
16、 REVERSE(str)
返回顛倒字元順序的字串str。
mysql> select REVERSE('abc');
-> 'cba'
17 、INSERT(str,pos,len,newstr)
返回字串str,在位置pos起始的子串且len個字元長得子串由字串newstr代替。
mysql> select INSERT('Quadratic', 3, 4, 'What');
-> 'QuWhattic
18 、ELT(N,str1,str2,str3,...)
如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小於1或大於引數個數,返回NULL。
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
-> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
-> 'foo'
19、 FIELD(str,str1,str2,str3,...)
返回str在str1, str2, str3, ...清單的索引。如果str沒找到,返回0。FIELD()是ELT()反運算。
mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 2
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 0
20 、LOWER(str)
返回字串str,根據當前字符集對映(預設是ISO-8859-1 Latin1)把所有的字元改變成小寫。該函式對多位元組是可靠的。
mysql> select LCASE('QUADRATICALLY');
-> 'quadratically'
21 、UPPER(str)
返回字串str,根據當前字符集對映(預設是ISO-8859-1 Latin1)把所有的字元改變成大寫。該函式對多位元組是可靠的。
mysql> select UCASE('Hej');
-> 'HEJ'
---------------------------------------------------------------------------------------------------------------------------------------------------
mysql 時間函式:
1、 DAYOFWEEK(date)
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。這些索引值對應於ODBC標準。
mysql> select DAYOFWEEK('1998-02-03');
-> 3
2、 WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
mysql> select WEEKDAY('1997-10-04 22:23:00');
-> 5
3 、DAYOFMONTH(date)
返回date的月份中日期,在1到31範圍內。
mysql> select DAYOFMONTH('1998-02-03');
-> 3
4 、DAYOFYEAR(date)
返回date在一年中的日數, 在1到366範圍內。
mysql> select DAYOFYEAR('1998-02-03');
-> 34
5 、MONTH(date)
返回date的月份,範圍1到12。
mysql> select MONTH('1998-02-03');
-> 2
6 、DAYNAME(date)
返回date的星期名字。
mysql> select DAYNAME("1998-02-05");
-> 'Thursday'
7 、MONTHNAME(date)
返回date的月份名字。
mysql> select MONTHNAME("1998-02-05");
-> 'February'
8 、QUARTER(date)
返回date一年中的季度,範圍1到4。
mysql> select QUARTER('98-04-01');
-> 2
9 、WEEK(date)
10 、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
11 、YEAR(date)
返回date的年份,範圍在1000到9999。
mysql> select YEAR('98-02-03');
-> 1998
12、 HOUR(time)
返回time的小時,範圍是0到23。
mysql> select HOUR('10:05:03');
-> 10
13 、MINUTE(time)
返回time的分鐘,範圍是0到59。
mysql> select MINUTE('98-02-03 10:05:03');
-> 5
14、 SECOND(time)
回來time的秒數,範圍是0到59。
mysql> select SECOND('10:05:03');
-> 3
15、PERIOD_ADD(P,N)
增加N個月到階段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意階段引數P不是日期值。
mysql> select PERIOD_ADD(9801,2);
-> 199803
16、 PERIOD_DIFF(P1,P2)
返回在時期P1和P2之間月數,P1和P2應該以格式YYMM或YYYYMM。注意,時期引數P1和P2不是日期值。
mysql> select PERIOD_DIFF(9802,199703);
-> 11
17 、DATE_ADD(date,INTERVAL expr type)
18 、DATE_SUB(date,INTERVAL expr type)
19、 ADDDATE(date,INTERVAL expr type)
20、 SUBDATE(date,INTERVAL expr type)
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"
例如: select adddate('1997-12-31',interval 1 month);
select date_add('1997-12-31',interval 1 month);
21、TO_DAYS(date)
給出一個日期date,返回一個天數(從0年的天數)。 0000
mysql> select TO_DAYS('1997-10-07');
-> 729669
22 、FROM_DAYS(N)
給出一個天數N,返回一個DATE值。
mysql> select FROM_DAYS(729669);
-> '1997-10-07'
23 、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更早的版本中,%是可選的。
24 、TIME_FORMAT(time,format)
這象上面的DATE_FORMAT()函式一樣使用,但是format字串只能包含處理小時、分鐘和秒的那些格式修飾符。其他修飾符產生一個NULL值或0
25、 Mysql取系統函式:
Select curtime();
Select curdate():
Select sysdate():
select now();
------------------------------------------------------------------------------------------------------------------------------------------------------------------
流程控制函式:
1、 IFNULL(expr1,expr2)
如果 expr1 為非 NULL 的,IFNULL() 返回 expr1,否則返回 expr2。
2、 NULLIF(expr1,expr2)
如果 expr1 = expr2 為真,返回 NULL,否則返回 expr1
3、 IF(expr1,expr2,expr3) 如果 expr1 為真(expr1 <> 0 以及 expr1 <> NULL),那麼 IF() 返回 expr2,否則返回 expr3