mysql函数一

来源:互联网 发布:vb.net excel教程 编辑:程序博客网 时间:2024/05/01 07:49
  1. 一、数学函数  
  2. ABS(X)返回x的绝对值  
  3. CEIL(X),CEILING(X)返回大于或等于x的最小整数  
  4. FLOOR(X)返回小于或等于x的最大整数  
  5. RAND()返回0~1的随机数  
  6. RAND(X)返回0~1的随机数,x值相同时返回的随机数相同  
  7. PI()返回圆周率(3.141593)  
  8. ROUND(X)返回离x最近的整数  
  9. ROUND(X,Y)保留x小数点后y位的值,但截断时要进行四舍五入  
  10. TRUNCATE(X,Y)返回数值x保留到小数点后y位的值,直接进行截断,不进行四舍五入  
  11. sign(x)返回x的符号,x是负数返回-1,是0返回0,是正数返回1  
  12. POW(X,Y),POWER(X,Y)返回x的y次方  
  13. SQRT(X)返回x的平方根  
  14. EXP(X)返回e的x次方  
  15. MOD(X,Y)返回x除以y以后的余数  
  16. LOG(X)返回自然对数(以e为底的对数)  
  17. LOG10(X)返回以10为底的对数  
  18.   
  19. 二、字符串函数  
  20. char_length(s)返回字符串s的字符数  
  21. length(s)返回字符串s的长度,长度指的是字节数。  
  22. 例1在gb2312下一个汉字表示两个字节:  
  23. mysql> select char_length('你好'),length('你好');  
  24. +---------------------+----------------+  
  25. | char_length('你好') | length('你好') |  
  26. +---------------------+----------------+  
  27. |                   2 |              4 |  
  28. +---------------------+----------------+  
  29. 1 row in set (0.00 sec)  
  30. 例2在unicode下1个汉字表示三个字节:  
  31. mysql> select char_length('你好'),length('你好');  
  32. +-----------------------+------------------+  
  33. | char_length('你好')   | length('你好')   |  
  34. +-----------------------+------------------+  
  35. |                     2 |                6 |  
  36. +-----------------------+------------------+  
  37. 1 row in set (0.00 sec)  
  38.   
  39. concat(s1,s2,...)将字符串s1,s2等多个字符串合并为一个字符串,如果有字符串为null则结果为null  
  40. concat_ws(x,s1,s2,...)同concat(s1,s2,...)函数,但是每个字符串之间要加上x,如果有字符串为null,则忽略null  
  41. mysql> select concat(a,'ccc',b) from pet3;  
  42. +-------------------+  
  43. | concat(a,'ccc',b) |  
  44. +-------------------+  
  45. | 11cccdsf          |  
  46. | 12cccdsf          |  
  47. +-------------------+  
  48. 2 rows in set (0.00 sec)  
  49. insert(s1,x,len,s2)将字符串s2替换s1的x位置开始长度为len的字符串  
  50. 例:  
  51. mysql> select insert('lmnopqrs',2,2,'abcdefg');  
  52. +----------------------------------+  
  53. | insert('lmnopqrs',2,2,'abcdefg') |  
  54. +----------------------------------+  
  55. | labcdefgopqrs                    |  
  56. +----------------------------------+  
  57. 1 row in set (0.00 sec)  
  58.   
  59. upper(s),ucase(s)将字符串s的所有字母都变成大写字母  
  60. lower(s),lcase(s)将字符串s的所有字母都变成小写字母  
  61. left(s,n)返回字符串s的前n个字符  
  62. right(s,n)返回字符串s的后n个字符  
  63. lpad(s1,len,s2)字符串s2来填充s1的开始处,使字符串长度达到len  
  64. rpad(s1,len,s2)字符串s2来填充s1的结尾处,使字符串长度达到len  
  65. 例:  
  66. mysql> select lpad('aBC',3,'def');  
  67. +---------------------+  
  68. | lpad('aBC',3,'def') |  
  69. +---------------------+  
  70. | aBC                 |  
  71. +---------------------+  
  72. 1 row in set (0.00 sec)  
  73.   
  74. 例:  
  75. mysql> select lpad('aBC',10,'def');  
  76. +----------------------+  
  77. | lpad('aBC',10,'def') |  
  78. +----------------------+  
  79. | defdefdaBC           |  
  80. +----------------------+  
  81. 1 row in set (0.00 sec)  
  82.   
  83. ltrim(s)去掉字符串s开始处的空格  
  84. rtrim(s)去掉字符串s结尾处的空格  
  85. trim(s)去掉字符串s开始处和结尾处的空格  
  86. trim(s1 from s)去掉字符串s中开始处和结尾处的字符串s1  
  87. 例:  
  88. mysql> select trim('ab' from 'ababcccccabccccab');  
  89. +-------------------------------------+  
  90. | trim('ab' from 'ababcccccabccccab') |  
  91. +-------------------------------------+  
  92. | cccccabcccc                         |  
  93. +-------------------------------------+  
  94. 1 row in set (0.00 sec)  
  95. repeat(s,n)将字符串s重复n次  
  96. space(n)返回n个空格  
  97. replace(s,s1,s2)用字符串s2替代字符串s中的字符串s1  
  98. strcmp(s1,s2)比较字符串s1和s2,小于返回-1,相等返回0,大于返回1  
  99. substring(s,n,len)获取从字符串s中的第n个位置开始长度为len的字符串  
  100. mid(s,n,len)同subtring(s,n,len)  
  101. locate(s1,s),position(s1 in s)从字符串s中获取s1的开始位置  
  102. instr(s,s1)从字符串s中获取s1的开始位置  
  103. reverse(s)将字符串s的顺序反过来  
  104. elt(n,s1,s2,...)返回第n个字符串  
  105. export_set(x,s1,s2)  
  106. field(s,s1,s2,...)返回第一个与字符串s匹配的字符串的位置,如果没有则返回0  
  107. find_in_set(s1,s2)返回在字符串s2与s1匹配的字符串的位置,s2必须以逗号分隔  
  108. 例:  
  109. mysql> select find_in_set('bc','a,bc,d,e,b');  
  110. +--------------------------------+  
  111. | find_in_set('bc','a,bc,d,e,b') |  
  112. +--------------------------------+  
  113. |                              2 |  
  114. +--------------------------------+  
  115. 1 row in set (0.00 sec)  
  116. make_set(x,s1,s2,...)按x的二进制数从s1,s2,...,sn中选取字符串,1表示选取,0表示不选取,第一个字符串对应二进制最低的一位以此类推  
  117. 例:  
  118. mysql> select make_set(1|4,'a','b','c','de');  
  119. +--------------------------------+  
  120. | make_set(1|4,'a','b','c','de') |  
  121. +--------------------------------+  
  122. | a,c                            |  
  123. +--------------------------------+  
  124. 1 row in set (0.03 sec)  
  125. 注:1|4得到二进制为101,右边第一个1对应a,0对应b,左边第一个1对应c  
  126. 例:  
  127. mysql> select make_set(4,'a','b','c','de');  
  128. +------------------------------+  
  129. | make_set(4,'a','b','c','de') |  
  130. +------------------------------+  
  131. | c                            |  
  132. +------------------------------+  
  133. 1 row in set (0.00 sec)  
  134. 注:4得到二进制100,1对应c  
  135.   
  136. 三、日期和时间函数  
  137. curdate(),current()_date()返回当前日期  
  138. curtime(),current_time()返回当前时间  
  139. now(),current_timestamp(),localtime(),sysdate(),localtimestamp()返回当前日期和时间  
  140. unix_timestamp()以unix时间戳的形式返回当前时间  
  141. unix_timestamp(d)将日期时间d以unix时间戳的形式返回  
  142. from_unixtime(d)把unix时间戳的时间转化为普通格式的时间  
  143. utc_date()返回utc日期,utc为世界统一时间  
  144. utc_time()返回utc时间  
  145. month(d)返回日期d中的月份值,范围是1~12  
  146. monthname(d)返回日期d中的月份名称,如january  
  147. dayname(d)返回日期d是星期几,如Monday,Tuesday等  
  148. dayofweek(d)返回日期d是星期几,范围1~7,1表示星期日,2表示星期一等  
  149. weekday(d)返回日期d是星期几,范围0~6,0表示星期一,1表示星期二等  
  150. week(d,n)计算日期d是本年的第几个星期,n表示一周的第一天是星期几,0表示星期日,范围是0~53  
  151. weekofyear(d)计算日期d是本年的第几个星期,范围是1~53  
  152. dayofyear(d)计算日期d是本年的第几天  
  153. dayofmonth(d)计算日期d是本月的第几天  
  154. year(d)返回日期d中的年份值  
  155. quarter(d)返回日期d是第几季度,范围是1~4  
  156. hour(t)返回时间t中的小时值  
  157. minute(t)返回时间t中的分钟值  
  158. second(t)返回时间t中的秒钟值  
  159. extract(type from d)从日期d中获取指定的值,type指定返回的值,如year,month,day,hour,minute,second等  
  160. 例:  
  161. mysql> select extract(year from now());  
  162. +--------------------------+  
  163. | extract(year from now()) |  
  164. +--------------------------+  
  165. |                     2015 |  
  166. +--------------------------+  
  167. 1 row in set (0.00 sec)  
  168.   
  169. time_to_sec(t)将时间t转化为秒  
  170. sec_to_time(s)将以秒为单位的时间s转换为时分秒的格式  
  171. to_days(d)计算日期d与0000年1月1日的天数  
  172. from_days(n)计算从0000年1月1日开始,n天后的日期,以上面的互反  
  173. datediff(d1,d2)计算日期d1~d2之间相隔的天数  
  174. adddate(d,n)计算起始日期d加上n天的日期  
  175. adddate(d,interval expr type)计算起始日期d加上一个时间段后的日期  
  176. date_add(d,interval expr type)同上  
  177. 上面的interval expr type表示  
  178. expr表达式形式   类型   含义  
  179. YY  year    年  
  180. MM  month   月  
  181. DD  day 日  
  182. hh  hour    时  
  183. mm  minute  分  
  184. ss  second  秒  
  185. YY和MM之间用任意符号隔开  year_month  年和月  
  186. DD和hh之间用任意符号隔开  day_hour    日和小时  
  187. DD和mm之间用任意符号隔开  day_minute  日和分钟  
  188. DD和ss之间用任意符号隔开  day_second  日和秒钟  
  189. hh和mm之间用任意符号隔开  hour_minute 时和分  
  190. hh和ss之间用任意符号隔开  hour_second 时和秒  
  191. mm和ss之间用任意符号隔开  minute_second   分和秒  
  192. 注:不能组合使用  
  193. 例:  
  194. mysql> select adddate('2009-05-06',interval '-1 -1' year_month);//查询一年零一月前的日期,可以用负数  
  195. +---------------------------------------------------+  
  196. | adddate('2009-05-06',interval '-1 -1' year_month) |  
  197. +---------------------------------------------------+  
  198. | 2008-04-06                                        |  
  199. +---------------------------------------------------+  
  200. 1 row in set (0.00 sec)  
  201.   
  202. subdate(d,n)计算起始日期d减去n天的日期  
  203. subdate(d,interval expr type)计算起始日期d减去一个时间段后的日期  
  204. addtime(t,n)计算起始时间t加上n秒的时间  
  205. subtime(t,n)计算起始时间t减去n秒的时间  
  206.   
  207. date_fromat(d,f)按照下表的表达式f的要求显示日期d  
  208. time_fromt(t,f)按照下表的表达式f的要求显示时间t  
  209. 日期时间格式:  
  210. 符号  含义  取值示例  
  211. %Y  以4位数字表示年份   2008,2009等  
  212. %y  以2位数字表示年份   98,99等  
  213. %m  以2位数字表示月份   01,02,...,12  
  214. %c  以数字表示月份 1,2,...,12  
  215. %M  月份的英文名  January,February,...,December  
  216. %b  月份的英文缩写 Jan,Feb,..,Dec  
  217. %U  表示星期数,其中sunday是星期的第一天   00~52  
  218. %u  表示星期数,其中monday是星期的第一天   00~52  
  219. %j  以3位数字表示年中的天数    001~366  
  220. %d  以2位数字表示月中的几号    01,02,...,31  
  221. %e  以数字表示月中的几号  1,2,...,31  
  222. %D  以英文后缀表示月中的几号    1st,2nd,...,  
  223. %w  以数字的形式表示星期几 0表示sunday,1表示Monday,...  
  224. %W  星期几的英文名 Monday,...,Sunday  
  225. %a  星期几的英文缩写    Mon,...,Sun  
  226. %T  24小时制的时间形式  00:00:00~23:59:59  
  227. %r  12小时制的时间形式  12:00:00AM~11:59:59PM  
  228. %p  上午(AM)或下午(PM)   AM或PM  
  229. %k  以数字表示24小时   0,1,...,23  
  230. %l  以数字表示12小时   1,2,...,12  
  231. %H  以2位数表示24小时  00,01,...,23  
  232. %h,%I   以2位数表示12小时  01,02,...,12  
  233. %i  以2位数表示分 00,01,...,59  
  234. %S,%s   以2位数表示时 00,01,...,59  
  235. %%  标识符%    %  
  236. 例:下面用“Jan 1st 1986”的形式显示日期  
  237. mysql> select date_format('2009-10-25','%b %D %Y');  
  238. +--------------------------------------+  
  239. | date_format('2009-10-25','%b %D %Y') |  
  240. +--------------------------------------+  
  241. | Oct 25th 2009                        |  
  242. +--------------------------------------+  
  243. 1 row in set (0.05 sec)  
  244.   
  245. get_fromat(type,s)根据字符串s获取type类型数据的显示格式  
  246. 图.get_fromat()函数返回的格式字符串格式:  
  247. 函数  返回的格式字符串      
  248. GET_FORMAT(DATE,'EUR')  '%d.%m.%Y'    
  249. GET_FORMAT(DATE,'USA')  '%m.%d.%Y'  
  250. GET_FORMAT(DATE,'JIS')  '%Y-%m-%d'  
  251. GET_FORMAT(DATE,'ISO')  '%Y-%m-%d'  
  252. GET_FORMAT(DATE,'INTERNAL') '%Y%m%d'  
  253. GET_FORMAT(DATETIME,'EUR')  '%Y-%m-%d-%H.%i.%s'  
  254. GET_FORMAT(DATETIME,'USA')  '%Y-%m-%d-%H.%i.%s'  
  255. GET_FORMAT(DATETIME,'JIS')  '%Y-%m-%d-%H:%i:%s'  
  256. GET_FORMAT(DATETIME,'ISO')  '%Y-%m-%d-%H:%i:%s'  
  257. GET_FORMAT(DATETIME,'INTERNAL') '%Y%m%d%H%i%s'  
  258. GET_FORMAT(TIME,'EUR')  '%H.%i.%s'  
  259. GET_FORMAT(TIME,'USA')  '%H:%i:%s %p'  
  260. GET_FORMAT(TIME,'JIS')  '%H:%i:%s'  
  261. GET_FORMAT(TIME,'ISO')  '%H:%i:%s'  
  262. GET_FORMAT(TIME,'INTERNAL') '%H%i%s'  
  263. 例:  
  264. mysql> select get_format(time,'USA');  
  265. +------------------------+  
  266. | get_format(time,'USA') |  
  267. +------------------------+  
  268. | %h:%i:%s %p            |  
  269. +------------------------+  
  270. 1 row in set (0.03 sec)  
  271. 注:GET_FORMAT()函数一般用来为DATETIME类型的数据提供格式字符串,如:  
  272. DATE_FORMAT('2014-10-11 23:17:28',GET_FORMAT(DATE,'USA'))函数返回的结果为10.11.2014。这是因为使用GET_FORMAT(DATE,'USA')函数将日期的显示格式设置为了$m.%d.%Y。另外datetime类型的数据格式化没有时间则时间部分为0时0分0秒,没有日期部分则为0年0月0日  
0 0