MySQL——MySQL中的常用函数
来源:互联网 发布:js获取标签classname 编辑:程序博客网 时间:2024/05/16 06:58
字符串函数
字符串函数是字符串函数是最常用的一种函数。
函数描述CONCAT(S1,S2,…,Sn)连接S1,S2,…,Sn为一个字符串CONTACT_WS(separator,S1,S2,…,Sn)以separator为分隔符连接S1,S2,…,SnINSERT(str,x,y,instr)将字符串从第x位置开始,y个字符长的子串替换为字符串instrLOWER(str)将字符串中所有字符变为小写UPPER(str)将字符串中所有字符变为大写LEFT(str,x)返回字符串str最左边的x个字符RIGHT(str,x)返回字符串str最右边的x个字符LPAD(str,n,pad)用字符串pad对str最左边进行填充,直到长度为n个字符长度RPAD(str,n,pad)用字符串pad对str最右边进行填充,直到长度为n个字符长度LTRIM(str)去掉字符串str左侧的空格RTRIM(str)去掉字符串str右侧的空格TRIM(str)去掉字符串行尾和行头的空格REPEAT(str,x)返回str重复x次的结果REPLACE(str,a,b)用字符串b替换字符串str中所有出现的字符串aSTRCMP(s1,s2)比较字符串s1和s2SUBSTRING(str,x,y)返回从字符串str x位置起y个字符长度的子串- CONCAT上一步
CONCAT(s1,s2,…,sn)函数:把传入的参数连接成为一个字符串。可接收一个或多个参数。如果所有的参数都是二进制字符串,返回的结果是一个二进制字符串。如果参数包括任何二进制字符串,那么结果就是二进制字符串。数值参数转换为等价的二进制字符串形式。
如果参数中包含NULL,则结果就是NULL。
mysql> SELECT CONCAT(‘My’, ‘S’, ‘QL’);
+————————-+
| CONCAT(‘My’, ‘S’, ‘QL’) |
+————————-+
| MySQL |
+————————-+
1 row in set (0.00 sec)
mysql> SELECT CONCAT(‘My’, NULL, ‘QL’);
+————————–+
| CONCAT(‘My’, NULL, ‘QL’) |
+————————–+
| NULL |
+————————–+
1 row in set (0.00 sec)
带引号的字符串,拼接操作可以简化为依次放置的SELECT语句:mysql> SELECT ‘My’ ‘S’ ‘QL’;
+——-+
| My |
+——-+
| MySQL |
+——-+
1 row in set (0.00 sec) - CONTACT_WS上一步
CONTACT_WS是CONTACT With Separator的简写,意思就是以指定的分隔符进行拼接。分隔符可以是一个字符串,如果分隔符是NULL,结果为NULL。mysql> SELECT CONCAT_WS(‘NULL’,’First name’,’Second name’,’Last Name’);
+———————————————————-+
| CONCAT_WS(‘NULL’,’First name’,’Second name’,’Last Name’) |
+———————————————————-+
| First nameNULLSecond nameNULLLast Name |
+———————————————————-+
1 row in set (0.00 sec)
mysql> SELECT CONCAT_WS(NULL,’First name’,’Second name’,’Last Name’);
+——————————————————–+
| CONCAT_WS(NULL,’First name’,’Second name’,’Last Name’) |
+——————————————————–+
| NULL |
+——————————————————–+
1 row in set (0.00 sec)
注意:第一个sql中的’NULL’不是NULL值,只是一个字符串。concat_ws()不跳过空字符串。但是会跳过分隔符参数后的任何NULL值。mysql> SELECT CONCAT_WS(‘,’,’First name’,’Second name’,’Last Name’);
+——————————————————-+
| CONCAT_WS(‘,’,’First name’,’Second name’,’Last Name’) |
+——————————————————-+
| First name,Second name,Last Name |
+——————————————————-+
1 row in set (0.00 sec)
mysql> SELECT CONCAT_WS(‘,’,’First name’,NULL,’Last Name’);
+———————————————-+
| CONCAT_WS(‘,’,’First name’,NULL,’Last Name’) |
+———————————————-+
| First name,Last Name |
+———————————————-+
1 row in set (0.00 sec) - INSERT上一步
INSERT(str,pos,len,instr)函数:将字符串从第pos位置开始,len个字符长的子串替换为字符串instr。如果pos不在str的长度内,则返回原字符串;pos后面的字符串长度小于len,返回instr替换pos后的字符串;如果任何参数为NULL,则返回值为NULL。mysql> SELECT INSERT(‘Quadratic’, 3, 4, ‘What’);
-> ‘QuWhattic’
mysql> SELECT INSERT(‘Quadratic’, -1, 4, ‘What’);
-> ‘Quadratic’
mysql> SELECT INSERT(‘Quadratic’, 3, 100, ‘What’);
-> ‘QuWhat’ - LOWER上一步
LOWER(str)函数:将str转换成小写。在字符串比较中,通常要将比较的字符串转换成大写或者小写。 - UPPER上一步
UPPER(str)函数:将str转换成大写。 - LEFT上一步
LEFT(str,len)函数:返回字符串最左边的len个字符,如果参数中有NULL,则返回NULL。 - RIGHT上一步
RIGHT(str,len)函数:返回字符串最右边的len个字符,如果参数中有NULL,则返回NULL。 - LPAD上一步
LPAD(str,len,padstr)函数:以padstr左填充字符串str到len个字符长度。如果str大于len,则返回str截断到len长度的字符串。 mysql> SELECT LPAD(‘hi’,4,’??’);
-> ‘??hi’
mysql> SELECT LPAD(‘hi’,1,’??’);
-> ‘h’ - RPAD上一步
类似于LPAD。 - LTRIM上一步
LTRIM(str)函数:返回去掉左边空格的字符串。 - RTRIM上一步
RTRIM(str)函数:返回去掉右边空格的字符串。 - TRIM上一步
TRIM(str)函数:返回去掉两边空格的字符串。 - REPEAT上一步
REPEAT(str,count)函数:返回str重复count次的字符串;如果count小于1,返回一个空串;如果count为NULL,则返回NULL。mysql> SELECT REPEAT(‘MySQL’, 3);
-> ‘MySQLMySQLMySQL’
mysql> SELECT REPEAT(‘MySQL’, 0);
->
mysql> SELECT REPEAT(‘MySQL’, NULL);
->NULL - REPLACE上一步
REPLACE(str,from_str,to_str)函数:用字符串to_str替换字符串str中所有出现的字符串from_str。 - STRCMP上一步
STRCMP(s1,s2)函数:比较字符串s1和s2的ASCII码值的大小。相等返回0;s1大于s2返回1;s1小于s2返回-1.
STRCMP使用参数的排序规则进行比较。mysql> SET @s1 = _latin1 ‘x’ COLLATE latin1_general_ci;
mysql> SET @s2 = _latin1 ‘X’ COLLATE latin1_general_ci;
mysql> SET @s3 = _latin1 ‘x’ COLLATE latin1_general_cs;
mysql> SET @s4 = _latin1 ‘X’ COLLATE latin1_general_cs;
mysql> SELECT STRCMP(@s1, @s2), STRCMP(@s3, @s4);
+——————+——————+
| STRCMP(@s1, @s2) | STRCMP(@s3, @s4) |
+——————+——————+
| 0 | 1 |
+——————+——————+
如果两个参数的比较规则不同,两个参数必须转换为相同的排序规则:mysql> SELECT STRCMP(@s1, @s3);
ERROR 1267 (HY000): Illegal mix of collations (latin1_general_ci,IMPLICIT)
and (latin1_general_cs,IMPLICIT) for operation ‘strcmp’
mysql> SELECT STRCMP(@s1, @s3 COLLATE latin1_general_ci);
+——————————————–+
| STRCMP(@s1, @s3 COLLATE latin1_general_ci) |
+——————————————–+
| 0 |
+——————————————–+ - SUBSTRING上一步
SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len)函数:返回从字符串str中的第pos位置开始len长度的字符串。 mysql> SELECT SUBSTRING(‘Quadratically’,5);
-> ‘ratically’
mysql> SELECT SUBSTRING(‘foobarbar’ FROM 4);
-> ‘barbar’
mysql> SELECT SUBSTRING(‘Quadratically’,5,6);
-> ‘ratica’
mysql> SELECT SUBSTRING(‘Sakila’, -3);
-> ‘ila’
mysql> SELECT SUBSTRING(‘Sakila’, -5, 3);
-> ‘aki’
mysql> SELECT SUBSTRING(‘Sakila’ FROM -4 FOR 2);
-> ‘ki’
数值函数
MySQL中另外一类很重要的函数就是数值函数,这些函数能处理很多数值方面的运算。
函数描述ABS(x)返回x的绝对值 CONV(N,from_base,to_base)进制转换函数CEIL(x)进一法取近似值,返回大于或等于x的最小整数值FLOOR(x)去尾法取近似值,返回小于或等于x的最大整数值POW(x,y)x的y次幂运算ROUND(x,y)返回参数x的四舍五入的有y位小数的值MOD(x,y)返回x/y的模RAND()返回0~1内的随机数TRUNCATE(x,y)返回数字截断为y位小数的结果- ABS上一步
ABS(x)函数:返回x的绝对值。 - CONV上一步
CONV(N,from_base,to_base)函数:返回将N从from_base进制转换为to_base的字符串表示形式。任一参数为NULL,则返回值为NULL。参数N将被解释为一个整数,但是可以传入整数或是字符串。from_base和to_base取值范围为2~36.如果,参数from_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’+X’0a’,10,10);
-> ‘40’ - CEIL上一步
CEIL(x)函数:同CEILING(x),进一法取近似值,这种说法更专业一些。官网给出的解释是“返回不小于x的最小整数值。”但是有些资料甚至是教材中的解释“返回大于x的最小整数值”,这种说法是错误的,例如:mysql> SELECT CEIL(1);
->1按照有些教材中的解释,得到的结果应该是2,但是实际返回1,有点编程基础的朋友都知道,ceil在多数语言中都表示进一法;同理,floor表示去尾法取近似值;round表示标准四舍五入近似值。 - FLOOR上一步
FLOOR(x)函数:去尾法取近似值。 - ROUND上一步
ROUND(x,y)函数,返回x四舍五入后保留y位小数的近似值。 - MOD上一步
MOD(x,y)函数:返回x/y的模,和x%y的结果相同,参数中任一为NULL,则结果为NULL,若y为0,结果返回NULL:mysql> SELECT MOD(234, 10);
-> 4
mysql> SELECT 253 % 7;
-> 1
mysql> SELECT MOD(29,9);
-> 2
mysql> SELECT 29 MOD 9;
-> 2
mysql> SELECT MOD(234, NULL);
-> NULL
mysql> SELECT MOD(234, 0);
-> NULLMOD函数也适用于小数取模,返回整数部分的模加上小数部分:mysql> SELECT MOD(34.5,3);
-> 1.5 - RAND上一步
RAND()函数:返回0~1随机的浮点数。利用此函数,可以取任意范围内的随机数, 取值范围R:[i,j)的表达公式为: FLOOR(i + RAND() * (j − i)),比如[50,150):SELECT FLOOR(50+RAND()*(150-50));
->102 - TRUNCATE上一步
TRUNCATE(x,y)函数:返回数字x截断为y位小数的结果。如果y为0,则返回值中没有小数部分,y可以是负数,此时返回值对应的位上为0:mysql> SELECT TRUNCATE(1.223,1);
-> 1.2
mysql> SELECT TRUNCATE(1.999,1);
-> 1.9
mysql> SELECT TRUNCATE(1.999,0);
-> 1
mysql> SELECT TRUNCATE(-1.999,1);
-> -1.9
mysql> SELECT TRUNCATE(122,-2);
-> 100
mysql> SELECT TRUNCATE(10.28*100,0);
-> 1028
日期和时间函数
注:日期和时间函数比较复杂,详情见官网或使用MySQL帮助命令查看说明
1.加减函数
2.日期提取函数
3.格式转换函数
流程函数
附录
日期格式
0 0
- MySQL——MySQL中的常用函数
- mysql中的常用函数
- MySQL 中的常用函数
- MySQL中的常用函数
- mysql中的常用函数
- PHP中的MYSQL常用函数
- PHP中的MYSQL常用函数
- MySQL中的常用字符串函数
- MySQL中的常用数值函数
- MySQL中的其他常用函数
- (4)mysql中的常用函数
- MySQL中的常用字符串函数
- PHP中的MYSQL常用函数
- mysql中的常用聚集函数
- Mysql中的常用函数介绍
- MySql——常用函数
- PHP中的MYSQL常用函数总结
- MySQL 中的常用日期时间函数
- tomacat运行报错
- C语言变长数组data[0]【总结】
- 欧拉工程第四题 找出两个三位数乘积构成的回文
- eclipse中maven添加本地jar包
- 缓存框架接口设计
- MySQL——MySQL中的常用函数
- Lightoj1028 【数学-乘法原理】
- android编译系统分析(五)system.img的生成过程
- 单元测试Junit
- AngularJs: Detect unsaved data using angularjs
- 安卓下Builder模式解析+自定义Dialog实战演练
- 深入理解Scala中的类型系统
- Android电视机(机顶盒)初次开发的一些经验分享
- How to pass new hidden value to backing bean in JSF