欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL单行函数

程序员文章站 2023-09-01 13:02:35
1、CONCAT(str1,str2,...) 返回来自于参数连结的字符串。如果任何参数是NULL,返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。 select CONCAT('My', 'S', 'QL');--'MySQL' select CONCAT('My', N ......

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