mysql常用函数汇总
- 格式:docx
- 大小:23.69 KB
- 文档页数:9
数据库MySQL常用函数大全一、数学函数ABS(x) 返回x的绝对值BIN(x)返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x)返回值e(自然对数的底)的x次方FLOOR(x)返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,...,xn) 返回集合中最小的值LN(x) 返回x的自然对数LOG(x,y)返回x的以y为底的对数MOD(x,y) 返回x/y的模(余数)PI()返回pi的值(圆周率)RAND()返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
ROUND(x,y)返回参数x的四舍五入的有y位小数的值SIGN(x) 返回代表数字x的符号的值SQRT(x) 返回一个数的平方根TRUNCATE(x,y) 返回数字x截短为y位小数的结果二、聚合函数(常用于GROUP BY从句的SELECT查询中)AVG(col)返回指定列的平均值COUNT(col)返回指定列中非NULL值的个数MIN(col)返回指定列的最小值MAX(col)返回指定列的最大值SUM(col)返回指定列的所有值之和GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果三、字符串函数ASCII(char)返回字符的ASCII码值BIT_LENGTH(str)返回字符串的比特长度CONCAT(s1,s2...,sn)将s1,s2...,sn连接成字符串CONCAT_WS(sep,s1,s2...,sn)将s1,s2...,sn连接成字符串,并用sep字符间隔INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果FIND_IN_SET(str,list)分析逗号分隔的list列表,如果发现str,返回str在list中的位置LCASE(str)或LOWER(str) 返回将字符串str中所有字符改变为小写后的结果LEFT(str,x)返回字符串str中最左边的x个字符LENGTH(s)返回字符串str中的字符数LTRIM(str) 从字符串str中切掉开头的空格POSITION(substr,str) 返回子串substr在字符串str中第一次出现的位置QUOTE(str) 用反斜杠转义str中的单引号REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果REVERSE(str) 返回颠倒字符串str的结果RIGHT(str,x) 返回字符串str中最右边的x个字符RTRIM(str) 返回字符串str尾部的空格STRCMP(s1,s2)比较字符串s1和s2TRIM(str)去除字符串首部和尾部的所有空格UCASE(str)或UPPER(str) 返回将字符串str中所有字符转变为大写后的结果四、日期和时间函数CURDATE()或CURRENT_DATE() 返回当前的日期CURTIME()或CURRENT_TIME() 返回当前的时间DATE_ADD(date,INTERVAL int keyword) 返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECT DATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH); DATE_FORMAT(date,fmt) 依照指定的fmt格式格式化日期date值DATE_SUB(date,INTERVAL int keyword) 返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECT DATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH); DAYOFWEEK(date) 返回date所代表的一星期中的第几天(1~7)DAYOFMONTH(date) 返回date是一个月的第几天(1~31)DAYOFYEAR(date) 返回date是一年的第几天(1~366)DAYNAME(date) 返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE); FROM_UNIXTIME(ts,fmt) 根据指定的fmt格式,格式化UNIX时间戳tsHOUR(time) 返回time的小时值(0~23)MINUTE(time) 返回time的分钟值(0~59)MONTH(date) 返回date的月份值(1~12)MONTHNAME(date) 返回date的月份名,如:SELECTMONTHNAME(CURRENT_DATE);NOW() 返回当前的日期和时间QUARTER(date) 返回date在一年中的季度(1~4),如SELECTQUARTER(CURRENT_DATE);WEEK(date) 返回日期date为一年中第几周(0~53)YEAR(date) 返回日期date的年份(1000~9999)一些示例:获取当前系统时间:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);返回两个日期值之间的差值(月数):SELECT PERIOD_DIFF(200302,199802);在Mysql中计算年龄:SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age FROM employee;这样,如果Brithday是未来的年月日的话,计算结果为0。
ASCII(str)返回字符串str的第一个字符的ASCII值(str是空串时返回0)mysql> select ASCII('2');-> 50mysql> select ASCII(2);-> 50mysql> select ASCII('dete');-> 100ORD(str)如果字符串str句首是单字节返回与ASCII()函数返回的相同值。
如果是一个多字节字符,以格式返回((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]mysql> select ORD('2');-> 50CONV(N,from_base,to_base)对数字N进制转换,并转换为字串返回(任何参数为NULL时返回NULL,进制范围为2-36进制,当to_base是负数时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))mysql> select BIN(12);-> '1100'OCT(N)把N转为八进制值并以字串返回(N是BIGINT数字,等价于CONV(N,10,8))mysql> select OCT(12);-> '14'HEX(N)把N转为十六进制并以字串返回(N是BIGINT数字,等价于CONV(N,10,16))mysql> select HEX(255);-> 'FF'返回由参数N,...对应的ASCII代码字符组成的一个字串(参数是N,...是数字序列,NULL值被跳过)mysql> select CHAR(77,121,83,81,'76');-> 'MySQL'mysql> select CHAR(77,77.3,'77.3');-> 'MMM'CONCA T(str1,str2,...)把参数连成一个长字符串并返回(任何参数是NULL时返回NULL)mysql> select CONCAT('My', 'S', 'QL');-> 'MySQL'mysql> select CONCAT('My', NULL, 'QL');-> NULLmysql> select CONCAT(14.3);-> '14.3'LENGTH(str)OCTET_LENGTH(str)CHAR_LENGTH(str)CHARACTER_LENGTH(str)返回字符串str的长度(对于多字节字符CHAR_LENGTH仅计算一次)mysql> select LENGTH('text');-> 4mysql> select OCTET_LENGTH('text');-> 4LOCATE(substr,str)POSITION(substr IN str)返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)mysql> select LOCATE('bar', 'foobarbar');-> 4mysql> select LOCATE('xbar', 'foobar');-> 0LOCATE(substr,str,pos)返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)mysql> select LOCATE('bar', 'foobarbar',5);-> 7INSTR(str,substr)返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)mysql> select INSTR('foobarbar', 'bar');-> 4mysql> select INSTR('xbar', 'foobar');-> 0LPAD(str,len,padstr)用字符串padstr填补str左端直到字串长度为len并返回mysql> select LPAD('hi',4,'??');-> '??hi'RPAD(str,len,padstr)用字符串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的位置pos起len个字符(使用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为正数时返回左端,否则返回右端子串)mysql> select SUBSTRING_INDEX('', '.', 2);-> 'www.mysql'mysql> select SUBSTRING_INDEX('', '.', -2);-> ''LTRIM(str)返回删除了左空格的字符串strmysql> select LTRIM(' barbar');-> 'barbar'RTRIM(str)返回删除了右空格的字符串strmysql> select RTRIM('barbar ');-> 'barbar'TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)返回前缀或后缀remstr被删除了的字符串str(位置参数默认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的一个同音字符串(听起来“大致相同”字符串有相同的同音字符串,非数字字母字符被忽略,在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)用字符串to_str替换字符串str中的子串from_str并返回mysql> select REPLACE('', 'w', 'Ww');-> ''REPEAT(str,count)返回由count个字符串str连成的一个字符串(任何参数为NULL时返回NULL,count<=0时返回一个空字符串)mysql> select REPEA T('MySQL', 3);-> 'MySQLMySQLMySQL'REVERSE(str)颠倒字符串str的字符顺序并返回mysql> select REVERSE('abc');-> 'cba'INSERT(str,pos,len,newstr)把字符串str由位置pos起len个字符长的子串替换为字符串newstr并返回mysql> select INSERT('Quadratic', 3, 4, 'What');-> 'QuWhattic'ELT(N,str1,str2,str3,...)返回第N个字符串(N小于1或大于参数个数返回NULL)mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');-> 'ej'mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');-> 'foo'FIELD(str,str1,str2,str3,...)返回str等于其后的第N个字符串的序号(如果str没找到返回0)mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');-> 2mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');-> 0FIND_IN_SET(str,strlist)返回str在字符串集strlist中的序号(任何参数是NULL则返回NULL,如果str没找到返回0,参数1包含","时工作异常)mysql> SELECT FIND_IN_SET('b','a,b,c,d');-> 2MAKE_SET(bits,str1,str2,...)把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应位置的字串选入字串集并返回(NULL串不添加到结果中)mysql> SELECT MAKE_SET(1,'a','b','c');-> 'a'mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');-> 'hello,world'mysql> SELECT MAKE_SET(0,'a','b','c');-> ''EXPORT_SET(bits,on,off,[separator,[number_of_bits]])按bits排列字符串集,只有当位等于1时插入字串on,否则插入off(separator默认值",",number_of_bits参数使用时长度不足补0而过长截断)mysql> select EXPORT_SET(5,'Y','N',',',4)-> Y,N,Y,NLCASE(str)LOWER(str)返回小写的字符串strmysql> select LCASE('QUADRATICALL Y');-> 'quadratically'UCASE(str)UPPER(str)返回大写的字符串strmysql> select UCASE('quadratically');-> 'QUADRATICALL Y'LOAD_FILE(file_name)读入文件并且作为一个字符串返回文件内容(文件无法找到,路径不完整,没有权限,长度大于max_allowed_packet会返回NULL)mysql> UPDATE table_name SET blob_column=LOAD_FILE("/tmp/picture") WHERE id=1;[color=red]数学函数[/color]ABS(N)返回N的绝对值mysql> select ABS(2);-> 2mysql> select ABS(-32);-> 32SIGN(N)返回参数的符号(为-1、0或1)mysql> select SIGN(-32);-> -1mysql> select SIGN(0);-> 0mysql> select SIGN(234);-> 1MOD(N,M)取模运算,返回N被M除的余数(同%操作符)mysql> select MOD(234, 10);-> 4mysql> select 234 % 10;-> 4mysql> select MOD(29,9);-> 2FLOOR(N)返回不大于N的最大整数值mysql> select FLOOR(1.23);-> 1mysql> select FLOOR(-1.23);-> -2CEILING(N)返回不小于N的最小整数值mysql> select CEILING(1.23);-> 2mysql> select CEILING(-1.23);-> -1ROUND(N,D)返回N的四舍五入值,保留D位小数(D的默认值为0) mysql> select ROUND(-1.23);-> -1mysql> select ROUND(-1.58);-> -2mysql> select ROUND(1.58);-> 2mysql> select ROUND(1.298, 1);-> 1.3mysql> select ROUND(1.298, 0);-> 1EXP(N)返回值e的N次方(自然对数的底)mysql> select EXP(2);-> 7.389056mysql> select EXP(-2);-> 0.135335LOG(N)返回N的自然对数mysql> select LOG(2);-> 0.693147mysql> select LOG(-2);LOG10(N)返回N以10为底的对数mysql> select LOG10(2);-> 0.301030mysql> select LOG10(100);-> 2.000000mysql> select LOG10(-100);-> NULLPOW(X,Y)POWER(X,Y)返回值X的Y次幂mysql> select POW(2,2);-> 4.000000mysql> select POW(2,-2);-> 0.250000SQRT(N)返回非负数N的平方根mysql> select SQRT(4);-> 2.000000mysql> select SQRT(20);-> 4.472136PI()返回圆周率mysql> select PI();-> 3.141593COS(N)返回N的余弦值mysql> select COS(PI());-> -1.000000SIN(N)返回N的正弦值mysql> select SIN(PI());-> 0.000000TAN(N)返回N的正切值mysql> select TAN(PI()+1);ACOS(N)返回N反余弦(N是余弦值,在-1到1的范围,否则返回NULL) mysql> select ACOS(1);-> 0.000000mysql> select ACOS(1.0001);-> NULLmysql> select ACOS(0);-> 1.570796ASIN(N)返回N反正弦值mysql> select ASIN(0.2);-> 0.201358mysql> select ASIN('foo');-> 0.000000ATAN(N)返回N的反正切值mysql> select ATAN(2);-> 1.107149mysql> select ATAN(-2);-> -1.107149ATAN2(X,Y)返回2个变量X和Y的反正切(类似Y/X的反正切,符号决定象限) mysql> select ATAN(-2,2);-> -0.785398mysql> select ATAN(PI(),0);-> 1.570796COT(N)返回X的余切mysql> select COT(12);-> -1.57267341mysql> select COT(0);-> NULLRAND()RAND(N)返回在范围0到1.0内的随机浮点值(可以使用数字N作为初始值) mysql> select RAND();-> 0.5925mysql> select RAND(20);mysql> select RAND(20);-> 0.1811mysql> select RAND();-> 0.2079mysql> select RAND();-> 0.7888DEGREES(N)把N从弧度变换为角度并返回mysql> select DEGREES(PI());-> 180.000000RADIANS(N)把N从角度变换为弧度并返回mysql> select RADIANS(90);-> 1.570796TRUNCATE(N,D)保留数字N的D位小数并返回mysql> select TRUNCA TE(1.223,1);-> 1.2mysql> select TRUNCA TE(1.999,1);-> 1.9mysql> select TRUNCA TE(1.999,0);-> 1LEAST(X,Y,...)返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)mysql> select LEAST(2,0);-> 0mysql> select LEAST(34.0,3.0,5.0,767.0);-> 3.0mysql> select LEAST("B","A","C");-> "A"GREATEST(X,Y,...)返回最大值(其余同LEAST())mysql> select GREATEST(2,0);-> 2mysql> select GREATEST(34.0,3.0,5.0,767.0);-> 767.0-> "C"[color=red]时期时间函数[/color]DAYOFWEEK(date)返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) mysql> select DAYOFWEEK('1998-02-03');-> 3WEEKDAY(date)返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。
MySQL常⽤函数⼤全讲解MySQL数据库中提供了很丰富的函数。
MySQL函数包括数学函数、字符串函数、⽇期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。
通过这些函数,可以简化⽤户的操作。
例如,字符串连接函数可以很⽅便的将多个字符串连接在⼀起。
在这⼀讲中将讲解的内容包括:数学函数字符串函数⽇期和时间函数条件判断函数系统信息函数加密函数格式化函数MySQL函数是MySQL数据库提供的内部函数。
这些内部函数可以帮助⽤户更加⽅便的处理表中的数据。
本⼩节中将简单介绍MySQL中包含哪⼏类函数,以及这⼏类函数的的使⽤范围和作⽤。
MySQL函数包括数学函数、字符串函数、⽇期和时间函数、条件判断函数、系统信息函数、加密函数等。
SELECT语句及其条件表达式都可以使⽤这些函数。
同时,INSERT 、UPDATE、DELECT语句及其条件表达式也可以使⽤这些函数。
例如,表中的某个数据是负数,现在需要将这个数据显⽰为正数。
这就可以使⽤绝对值函数。
从上⾯可以知道,MySQL函数可以对表中数据进⾏相应的处理,以便得到⽤户希望得到的数据。
这些函数可以使MySQL数据库的功能更加强⼤。
⼀、数学函数数学函数是MySQL中常⽤的⼀类函数。
主要⽤于处理数字,包括整型、浮点数等。
数学函数包括绝对值函数、正弦函数、余弦函数、获取随机数的函数等。
ABS(X):返回X的绝对值select ABS(-32);MOD(N,M)或%:返回N被M除的余数。
select MOD(15,7);select 15 % 7;FLOOR(X):返回不⼤于X的最⼤整数值。
select FLOOR(1.23);select FLOOR(-1.23);CEILING(X):返回不⼩于X的最⼩整数值。
select CEILING(1.23);select CEILING(-1.23);ROUND(X) :返回参数X的四舍五⼊的⼀个整数。
select ROUND(1.58);select ROUND(-1.58);⼆、字符串函数ASCII(str):返回字符串str的最左⾯字符的ASCII代码值。
mysql数据库函数返回值类型
MySQL数据库是一种非常流行的关系型数据库管理系统,它提供了许多内置的函数用于数据操作和查询。
这些函数可以返回不同的数据类型,包括数字、字符串、日期、时间等。
了解MySQL函数返回值的数据类型对于正确使用和调用这些函数非常重要。
以下是MySQL常用函数的返回值类型:
1. 数字函数返回数字类型,例如ABS、CEILING、FLOOR、ROUND 等函数。
2. 字符串函数返回字符串类型,例如CONCAT、LEFT、RIGHT、SUBSTR等函数。
3. 日期和时间函数返回DATE、DATETIME、TIME类型,例如NOW、CURDATE、CURTIME、YEAR、MONTH、DAY等函数。
4. 条件函数返回BOOLEAN类型,例如IF、CASE等函数。
需要注意的是,一些函数的返回值类型可能会根据输入参数的不同而有所变化。
例如,SUBSTR函数的返回值类型可能是VARCHAR或CHAR类型,具体取决于数据库的设置和参数的长度。
在使用MySQL函数时,开发者需要仔细检查函数的返回值类型并进行正确的类型转换。
这可以通过使用CAST或CONVERT函数来实现。
总之,了解MySQL函数返回值类型是正确使用和调用函数的关键。
在编写SQL查询和数据操作时,必须考虑数据类型的匹配和转换,以确保正确性和可靠性。
- 1 -。
MySQL排名统计(常⽤功能函数)select actor_id,@curr_cnt:=cnt as cnt ,@rank:=IF(@prev_cnt!=@curr_cnt,@rank+1,@rank) as rank,@prev_cnt:=@curr_cnt as dummyfrom(select actor_id,count(*) as cnt from film_actorgroup by actor_id ORDER BY cnt desc) as der,(select@curr_cnt:=0,@prev_cnt:=0,@rank:=0 ) as t -- 实际上相当于赋值操作-- 排名,考虑并列情况SELECT@rownum:=@rownum+1AS rownum,IF(@total= cnt ,@rank ,@rank :=@rownum) AS rank ,@total := cnt as total1, der.*FROM(select actor_id,count(*) as cnt from film_actorgroup by actor_id ORDER BY cnt desc) as der,( SELECT@rank :=0 ,@rownum :=0 ,@total :=NULL ) as t-- c100w ⽬标表 c10w 源表对应关系 c10w.id=c100w.idupdate c100w,c10w set c100w.grender=c10w.grender where c10w.id=c100w.id -- 10w 2.083s常见性能优化场景:1、多表连接查询很慢,⽽且不论结果多少,查询耗时差不多。
可能原因缺少索引导致全表扫码,考虑索引优化查询缺少索引时,减少表连接看耗时是否减少,再排查连接表是否有索引。
MySQL函数描述、学习总结(适用版本:MySQL 3.23.7alpla)1. MySQL API (2)1.1. MySQL C API (2)1.2. C API数据类型 (3)1.3. C API函数概述 (6)1.4. C API函数描述 (9)1.4.1. mysql_affected_rows() (10)1.4.2. mysql_close() (11)1.4.3. mysql_connect() (11)1.4.4. mysql_change_user() (12)1.4.5. mysql_create_db() (13)1.4.6. mysql_data_seek() (14)1.4.7. mysql_debug() (15)1.4.8. mysql_drop_db() (15)1.4.9. mysql_dump_debug_info() (16)1.4.10. mysql_eof() (17)1.4.11. mysql_errno() (18)1.4.12. mysql_error() (19)1.4.13. mysql_escape_string() (20)1.4.14. mysql_fetch_field() (21)1.4.15. mysql_fetch_fields() (22)1.4.16. mysql_fetch_field_direct() (23)1.4.17. mysql_fetch_lengths() (23)1.4.18. mysql_fetch_row() (24)1.4.19. mysql_field_count() (26)1.4.20. mysql_field_seek() (27)1.4.21. mysql_field_tell() (28)1.4.22. mysql_free_result() (28)1.4.23. mysql_get_client_info() (29)1.4.24. mysql_get_host_info() (29)1.4.25. mysql_get_proto_info() (30)1.4.26. mysql_get_server_info() (30)1.4.27. mysql_info() (30)1.4.28. mysql_init() (31)1.4.29. mysql_insert_id() (32)1.4.30. mysql_kill() (32)1.4.31. mysql_list_dbs() (33)1.4.32. mysql_list_fields() (34)1.4.33. mysql_list_processes() (35)1.4.34. mysql_list_tables() (35)1.4.35. mysql_num_fields() (36)1.4.36. mysql_num_rows() (38)1.4.37. mysql_options() (38)1.4.38. mysql_ping() (40)1.4.39. mysql_query() (41)1.4.40. mysql_real_connect() (41)1.4.41. mysql_real_query() (43)1.4.42. mysql_reload() (44)1.4.43. mysql_row_seek() (45)1.4.44. mysql_row_tell() (45)1.4.45. mysql_select_db() (46)1.4.46. mysql_shutdown() (47)1.4.47. mysql_stat() (47)1.4.48. mysql_store_result() (48)1.4.49. mysql_thread_id() (49)1.4.50. mysql_use_result() (50)1.4.51. 为什么在mysql_query()返回成功后,mysql_store_result()有时返回NULL? (51)1.4.52. 我能从查询中得到什么结果? (51)1.4.53. 我怎样能得到最后插入的行的唯一ID? (52)1.MySQL API1.1. MySQL C APIC API代码是随MySQL分发的,它被包含在mysqlclient库且允许C程序存取一个数据库。
mysql中常用函数函数是MySQL中非常重要的一部分,它们可以帮助我们更方便、更高效地操作数据库。
下面是MySQL中常用函数的详细介绍:1.字符串函数:1.1 CONCAT:将两个或多个字符串连接起来。
语法:CONCAT(string1,string2,...)示例:SELECT CONCAT('Hello',' ','World'); //输出结果为'Hello World'1.2 SUBSTRING:返回一个字符串的子串。
语法:SUBSTRING(string,start,length)示例:SELECT SUBSTRING('Hello World',7,5); //输出结果为'World'1.3 REPLACE:替换一个字符串中的所有匹配项。
语法:REPLACE(string,old,new)示例:SELECT REPLACE('Hello World','World','MySQL'); //输出结果为'Hello MySQL'2.数值函数:2.1 ABS:返回一个数的绝对值。
语法:ABS(number)示例:SELECT ABS(-10); //输出结果为102.2 CEILING/FLOOR:向上/向下取整。
语法:CEILING(number) / FLOOR(number)示例:SELECT CEILING(3.14); //输出结果为42.3 RAND:返回一个随机数。
语法:RAND()示例:SELECT RAND(); //输出结果为0-1之间的随机数3.日期和时间函数:3.1 NOW/CURDATE/CURTIME: 返回当前日期/时间信息。
语法: NOW() / CURDATE() / CURTIME()示例: SELECT NOW(); // 输出结果为当前日期和时间3.2 DATE_FORMAT: 格式化日期和时间信息。
MySQL(casewhenthenelseend)和常⽤函数⽤法case when then else end 相当于Java的if-else if-else,可以⽤来在select语句中将要显⽰的内容替换成另⼀个内容⽤法1:case 字段名when 条件then 显⽰为什么else 条件end例⼦1:select(case sexwhen '1'then '男'else '⼥'end) as sexfrom student⽤法2:casewhen 条件 then 显⽰为什么else 条件end例⼦2:select(case when sex='1'then '男'else '⼥'end) as sexfrom studentIFNULL()函数IFNULL(字段名,将要转换成什么)selectif(score,0)fromresultin 和not inin、not in运算符,表⽰包含的集合,⼀般⽤于⼦查询的#只需要年龄为18,20,21的同学的成绩selectstu.id,stuName,score,agefromstudent as stu,result as rwherestu.id=r.stuIdage in(18,20,21)#不显⽰年龄为18岁的学⽣selectid,namefromstudentwhereid NOT IN(select id from age=18)将date⽇期类型转换成varchar类型(DATE_FORMAT(字段名,格式))SELECTDATE_FORMAT(DATE,'%Y-%m-%d') AS DateFROMtest将varchar类型转换成date类型(STR_TO_DATE(字段名,格式))SELECTSTR_TO_DATE(DATE,"%Y%m%d") AS DATEFROMtestvarchar和date相互转换的格式参数格式描述%a缩写星期名%b缩写⽉名%c⽉,数值%D带有英⽂前缀的⽉中的天%d⽉的天,数值(00-31)%e⽉的天,数值(0-31)%f微秒%H⼩时 (00-23)%h⼩时 (01-12)%I⼩时 (01-12)%i分钟,数值(00-59)%j年的天 (001-366)%k⼩时 (0-23)%l⼩时 (1-12)%M⽉名%m⽉,数值(00-12)%p AM 或 PM%r时间,12-⼩时(hh:mm:ss AM 或 PM)%S秒(00-59)%s秒(00-59)%T时间, 24-⼩时 (hh:mm:ss)%U周 (00-53) 星期⽇是⼀周的第⼀天%u周 (00-53) 星期⼀是⼀周的第⼀天%V周 (01-53) 星期⽇是⼀周的第⼀天,与 %X 使⽤%v周 (01-53) 星期⼀是⼀周的第⼀天,与 %x 使⽤%W星期名%w周的天(0=星期⽇, 6=星期六)%X年,其中的星期⽇是周的第⼀天,4 位,与 %V 使⽤%x年,其中的星期⼀是周的第⼀天,4 位,与 %v 使⽤%Y年,4 位%y年,2 位将查询结果复制到⼀张新表(create table)或者插⼊到已创建的新表(insert into)中#复制到新表中CREATE TABLEnew_tableSELECTid,nameFROMtest#复制到已创建的新表中INSERT INTOb_table(id,name)SELECTid,nameFROMc_table。
Mysqli的常⽤函数Mysqli的常⽤函数
连接数据库:
$res = @mysqli_connect($host,$username,$pass,$db_name);
if (mysqli_connect_errno($res)){
echo "连接 MySQL 失败: " . mysqli_connect_error();
exit;
}
设置字符集
mysqli_set_charset($res,$charset);
执⾏sql语句
mysqli_query($res,$sql);
增删改不会返回数据的SQL语句,在执⾏没有错误时将返回true。
//查询时,返回结果集。
mysqli_fetch_all() 函数
从结果集中取得所有⾏作为关联数组,或数字数组,或⼆者兼有
第⼆个参数:
MYSQLI_ASSOC 返回关联数组
MYSQLI_NUM 返回数字数组
MYSQLI_BOTH ⼆者兼有
mysqli_fetch_array()
从结果集中取得⼀⾏作为关联数组,或数字数组,或⼆者兼有。
(注意是⼀⾏,多⾏需要循环)
mysqli_fetch_assoc()
从结果集中取得⼀⾏作为关联数组。
(注意是⼀⾏,多⾏需要循环)
mysqli_fetch_row()
从结果集中取得⼀⾏,并作为枚举数组返回。
mysqli_fetch_object()
从结果集中取得⼀⾏,并作为对象返回。
关闭连接
mysqli_close($res)。
MySQL数据库常用函数大全字符串函数字符串函数是最常用的一种函数,MySQL支持很多种字符串函数。
下列是MySQL支持的字符串函数表。
1、LOWER(str) 和UPPER(str)函数:用于转换大小写。
2、CONCAT(s1,s2…sn): 把传入的参数拼接成一个字符串。
任何和NULL进行字符串拼接的结果都是NULL。
3、LEFT(str,x) 和RIGHT(str,x) 函数:分别返回字符串最左边的x个字符和最右边的x个字符。
如果第二个参数是NULL,那么将不会返回任何字符串。
4、INSERT(str,x,y,instr): 将字符串str 从指定x的位置开始,取y个长度的字串替换为instr。
5、LTRIM(str)和RTRIM(str)分别表示去掉字符串str左侧和右侧的空格。
6、REPEAT(str,x)函数:返回str 重复x次的结果。
7、TRIM(str)函数,用于去掉目标字符串的空格。
8、SUBSTRING(str,x,y)函数,返回从字符串str中第x位置起y个字符长度的字符串。
9、LPAD(str,n,pad)和RPAD(str,n,pad)函数,用字符串pad对str左边和右边进行填充,直到长度为n个字符长度。
10、STRCMP(s1,s2)用于比较字符串s1和s2的ASCII值大小。
如果s1<s2,则返回-1,如果s1=s2,则返回0,如果s1>s2,则返回1。
11、REPLACE(str,a,b),用字符串b替换字符串str中所有出现的字符串a。
数值函数MySQL支持数值函数,这些函数能够处理很多数值运算。
1、A B S ( x )函数,返回x 的绝对值2、C E I L ( x )函数,返回大于x 的整数。
、M O D ( x , y ),对x 和y 进行取模操作。
、R O U N D ( x , y )返回x 四舍五入后保留位小数的值,如果是整数,那么y 为就是0,如不指定,那么y 默认也是0。
mysqli扩展常用函数一、前言MySQL是目前最流行的关系型数据库管理系统之一,而mysqli是PHP语言中操作MySQL数据库的扩展。
mysqli扩展提供了许多常用的函数,本文将详细介绍mysqli扩展常用函数。
二、连接MySQL数据库1. mysqli_connect()函数mysqli_connect()函数用于连接MySQL服务器,并返回一个连接对象。
该函数有四个参数:主机名、用户名、密码和数据库名。
如果连接成功,则返回一个mysqli对象,否则返回false。
示例代码:```$host = "localhost";$username = "root";$password = "";$dbname = "test";$conn = mysqli_connect($host, $username, $password, $dbname);if (!$conn) {die("Connection failed: " . mysqli_connect_error());}echo "Connected successfully";```2. mysqli_close()函数mysqli_close()函数用于关闭与MySQL服务器的连接。
该函数需要一个mysqli对象作为参数。
示例代码:```mysqli_close($conn);```三、查询数据1. mysqli_query()函数mysqli_query()函数用于执行SQL语句,并返回结果集对象。
该函数需要两个参数:一个是mysqli对象,另一个是SQL语句。
示例代码:```$sql = "SELECT * FROM users";$result = mysqli_query($conn, $sql);if (mysqli_num_rows($result) > 0) {while ($row = mysqli_fetch_assoc($result)) {echo "id: " . $row["id"] . " - Name: " . $row["name"] . "<br>"; }} else {echo "0 results";}```2. mysqli_fetch_assoc()函数mysqli_fetch_assoc()函数用于从结果集中获取一行作为关联数组。
mysql中返回表的函数MySQL中返回表的函数是用于查询数据库中的表结构信息的函数。
通过这些函数,我们可以获取表的名称、字段名称、字段类型、字段长度、字段约束等重要信息。
本文将介绍几个常用的MySQL函数,以帮助读者更好地了解表结构信息。
一、SHOW TABLES函数SHOW TABLES函数用于显示数据库中所有的表名。
使用该函数时,只需指定要查询的数据库名称即可。
例如,使用以下语句可以显示当前数据库中的所有表名:SHOW TABLES;该语句将返回一个结果集,其中包含当前数据库中的所有表名。
二、DESCRIBE函数DESCRIBE函数用于显示指定表的结构信息。
使用该函数时,需要指定要查询的表名。
例如,使用以下语句可以显示名为"students"的表的结构信息:DESCRIBE students;该语句将返回一个结果集,其中包含了"students"表的字段名称、字段类型、字段长度、字段是否允许为空等信息。
三、SHOW COLUMNS函数SHOW COLUMNS函数用于显示指定表的列信息。
使用该函数时,需要指定要查询的表名。
例如,使用以下语句可以显示名为"students"的表的列信息:SHOW COLUMNS FROM students;该语句将返回一个结果集,其中包含了"students"表的每一列的详细信息,包括列名、数据类型、是否允许为空、默认值等。
四、SHOW CREATE TABLE函数SHOW CREATE TABLE函数用于显示指定表的创建语句。
使用该函数时,需要指定要查询的表名。
例如,使用以下语句可以显示名为"students"的表的创建语句:SHOW CREATE TABLE students;该语句将返回一个结果集,其中包含了"students"表的创建语句,包括表名、字段名称、字段类型、字段约束等。
mysql 包含的函数公式
以下是 MySQL 中常用的一些函数和公式:
1. 字符串函数:
- CONCAT:连接两个或多个字符串;
- SUBSTRING:返回字符串的一个子串;
- LENGTH:返回一个字符串的长度;
- REPLACE:在字符串中替换子串;
- TRIM:去除字符串中的空格;
- UPPER/LOWER:将字符串转换为大写/小写。
2. 数字函数:
- ABS:返回一个数字的绝对值;
- ROUND:返回一个数字四舍五入后的值;
- CEIL/FLOOR:返回一个数字的向上/向下取整值;
- POW:返回一个数的指定次方值;
- RAND:返回一个随机数。
3. 日期和时间函数:
- NOW:返回当前日期和时间;
- DATE:提取日期部分;
- TIME:提取时间部分;
- YEAR/MONTH/DAY/HOUR/MINUTE/SECOND:分别提取年/月/日/时/分/秒;
- DATE_FORMAT:按指定的格式返回日期和时间。
4. 聚合函数:
- COUNT:用于统计记录数;
- SUM/AVG:分别返回一个数列的总和和平均数;
- MAX/MIN:分别返回一个数列的最大值和最小值。
上述列出的函数和公式只是 MySQL 中的一部分,MySQL 还有很多其他的函数可供使用。
Mysql中常用的函数函数表示对输入参数值返回一个具有特定关系的值。
mysql函数主要分为以下几类:数学函数字符串函数日期和时间函数条件判断函数系统信息函数和加密函数等其他函数数学函数:绝对值函数,三角函数,对数函数,随机函数,在有错误时返回null【例6.1】求2,-3.3和-33的绝对值,SQL语句如下:SELECT ABS(2), ABS(-3.3), ABS(-33);PI()返回圆周率的值默认显示小数位数是六位【例6.2】返回圆周率值,SQL语句如下:SELECT pi();平方根函数sqrt(x)和求余函数mod(x,y)【例6.3】求9,40和-49的二次平方根,SQL语句如下:SELECT SQRT(9), SQRT(40), SQRT(-49);【例6.4】对MOD(31,8),MOD(234, 10),MOD(45.5,6)进行求余运算,SQL语句如下:SELECT MOD(31,8),MOD(234, 10),MOD(45.5,6);获取整数的函数ceil(x) ceiling(x) 和floor(x)ceil(x)和ceiling(x)意义相同,返回x邻近的最大整数数值,返回值转化为一个bigint 【例6.5】使用CEILING函数返回最大整数,SQL语句如下:SELECT CEIL(-3.35),CEILING(3.35);FLOOR函数返回最小整数【例6.6】使用FLOOR函数返回最小整数,SQL语句如下:SELECT FLOOR(-3.35), FLOOR(3.35);获取随机数的函数rand() 和rand(x)rand()返回一个随机浮点v,范围在0~1之间(即0<=v<=1.0)例6.7】使用RAND()函数产生随机数,SQL语句如下:SELECT RAND(),RAND(),RAND();若是指定一个x则他被作为种子值,用来产生重复序列【例6.8】使用RAND(x)函数产生随机数,SQL语句如下:SELECT RAND(10),RAND(10),RAND(11);备注:所谓重复序列即产生的值相等,即rand(10) 和rand(10)产生的随机值相等四舍五入的函数round(x)返回最接近x的整数,对x进行四舍五入【例6.9】使用ROUND(x)函数对操作数进行四舍五入操作,SQL语句如下:SELECT ROUND(-1.14),ROUND(-1.67), ROUND(1.14),ROUND(1.66);ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位y为负数时,保留的小数点左边相应的位数直接保存为0【例6.10】使用ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y 位,SQL语句如下:SELECT ROUND(1.38, 1), ROUND(1.38, 0), ROUND(232.38, -1), round(232.38,-2);TRUNCATE(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,y位之后均化为0y为负数则 x小数点左起第y位开始后面所有值都化为0【例6.11】使用TRUNCATE(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,SQL语句如下:SELECT TRUNCATE(1.31,1), TRUNCATE(1.99,1), TRUNCATE(1.99,0), TRUNCATE(19.99,-1);字符串函数CHAR_LENGTH函数计算字符串字符个数【例6.26】使用CHAR_LENGTH函数计算字符串字符个数,SQL语句如下:SELECT CHAR_LENGTH('date'), CHAR_LENGTH('egg');LENGTH函数计算字符串长度【例6.27】使用LENGTH函数计算字符串长度,SQL语句如下:SELECT LENGTH('date'), LENGTH('egg');CONCAT函数连接字符串【例6.28】使用CONCAT函数连接字符串,SQL语句如下:SELECT CONCAT('My SQL', '5.5'),CONCAT('My',NULL, 'SQL');备注:一个参数为null返回结果为nullCONCAT_WS函数连接带分隔符的字符串concat_ws(x,s1,s2) x代表分割符,分割符为null 返回null【例6.29】使用CONCAT_WS函数连接带分隔符的字符串,SQL语句如下:SELECT CONCAT_WS('-', '1st','2nd', '3rd'), CONCAT_WS('*', '1st', NULL, '3rd');LOWER函数或者LCASE函数将字符串中所有字母字符转换为小写【例6.31】使用LOWER函数或者LCASE函数将字符串中所有字母字符转换为小写,SQL语句如下:SELECT LOWER('BEAUTIFUL'), LCASE('Well');UPPER函数或者UCASE函数将字符串中所有字母字符转换为大写【例6.32】使用UPPER函数或者UCASE函数将字符串中所有字母字符转换为大写,SQL语句如下:SELECT UPPER('black'), UCASE('BLacK');LEFT函数返回字符串中左边的字符left(s,n)返回字符串s最左边的n个字符【例6.33】使用LEFT函数返回字符串中左边的字符,SQL语句如下:SELECT LEFT('football', 5); 注意若超过字符串长度,系统以空格返回超过部分,以第一个字母为起点,若n为负,则返回空格。
Mysql常⽤函数(42)-substring_index函数Mysql常⽤函数的汇总,可看下⾯系列⽂章作⽤按照指定的分隔符划分字符串,可指定分隔符出现的次数substring_index 的语法格式SUBSTRING_INDEX(str, delim, count)语法格式说明str:需要操作的字符串delim:分隔符count:匹配 delim 出现的次数,可正数可负数栗⼦⼀SELECT SUBSTRING_INDEX('', '.', 1); # wwwSELECT SUBSTRING_INDEX('', '.', -1); # comSELECT SUBSTRING_INDEX('', '.', 2); # www.mysqlSELECT SUBSTRING_INDEX('', '.', -2); # 如果是负数则从右边开始寻找 delim,正数则是左边如果是1、-1,则返回第⼀个 delim 之前的字符串如果>1、< -1,则还会返回前⾯匹配到的 delim栗⼦⼆假设有三个 IP:127.0.0.1、192.128.0.15、255.255.255.255,要分别取每⼀个号段的值并返回sql 语句SELECT ip, SUBSTRING_INDEX(ip,'.',1) AS part1, SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',2),'.',-1) AS part2, SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',-2),'.',1) AS part3, SUBSTRING_INDEX(ip,'.',-1) AS part4FROM IPS;执⾏结果+-----------------+-------+-------+-------+-------+| ip | part1 | part2 | part3 | part4 |+-----------------+-------+-------+-------+-------+| 127.0.0.1 | 127 | 0 | 0 | 1 || 192.128.0.15 | 192 | 128 | 0 | 15 || 255.255.255.255 | 255 | 255 | 255 | 255 |+-----------------+-------+-------+-------+-------+中间的号段需要重复调⽤ SUBSTRING_INDEX,因为第⼀次调⽤的时候还是会返回两个号段栗⼦三可以说是⼀个⾯试题,解法有多种,那么如果⽤ SUBSTRING_INDEX 要如何编写呢?sql 语句SELECT YEAR,SUBSTRING_INDEX( GROUP_CONCAT( amount ), ",", 1 ) AS m1,SUBSTRING_INDEX( SUBSTRING_INDEX( GROUP_CONCAT( amount ), ",", 2 ),",", -1 ) AS m2, SUBSTRING_INDEX( SUBSTRING_INDEX( GROUP_CONCAT( amount ), ",", -2 ),",", 1 ) AS m3, SUBSTRING_INDEX( GROUP_CONCAT( amount ), ",", -1 ) AS m4FROMtestsGROUP BYYEAR执⾏结果。
mysql常用函数汇总(分享)一、数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x) 返回值e(自然对数的底)的x次方FLOOR(x) 返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,...,xn) 返回集合中最小的值LN(x) 返回x的自然对数LOG(x,y)返回x的以y为底的对数MOD(x,y) 返回x/y的模(余数)PI()返回pi的值(圆周率)RAND()返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
ROUND(x,y)返回参数x的四舍五入的有y位小数的值SIGN(x) 返回代表数字x的符号的值SQRT(x) 返回一个数的平方根TRUNCATE(x,y) 返回数字x截短为y位小数的结果二、聚合函数(常用于GROUP BY从句的SELECT查询中)AVG(col)返回指定列的平均值COUNT(col)返回指定列中非NULL值的个数MIN(col)返回指定列的最小值MAX(col)返回指定列的最大值SUM(col)返回指定列的所有值之和GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果三、字符串函数ASCII(char)返回字符的ASCII码值BIT_LENGTH(str)返回字符串的比特长度CONCAT(s1,s2...,sn)将s1,s2...,sn连接成字符串CONCAT_WS(sep,s1,s2...,sn)将s1,s2...,sn连接成字符串,并用sep字符间隔INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果FIND_IN_SET(str,list)分析逗号分隔的list列表,如果发现str,返回str在list中的位置LCASE(str)或LOWER(str) 返回将字符串str中所有字符改变为小写后的结果LEFT(str,x)返回字符串str中最左边的x个字符LENGTH(s)返回字符串str中的字符数LTRIM(str) 从字符串str中切掉开头的空格POSITION(substr,str) 返回子串substr在字符串str中第一次出现的位置QUOTE(str) 用反斜杠转义str中的单引号REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果REVERSE(str) 返回颠倒字符串str的结果RIGHT(str,x) 返回字符串str中最右边的x个字符RTRIM(str) 返回字符串str尾部的空格STRCMP(s1,s2)比较字符串s1和s2TRIM(str)去除字符串首部和尾部的所有空格UCASE(str)或UPPER(str) 返回将字符串str中所有字符转变为大写后的结果四、日期和时间函数CURDATE()或CURRENT_DATE() 返回当前的日期CURTIME()或CURRENT_TIME() 返回当前的时间DATE_ADD(date,INTERVAL int keyword)返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECTDATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH); DATE_FORMAT(date,fmt) 依照指定的fmt格式格式化日期date值DATE_SUB(date,INTERVAL int keyword)返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECTDATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH); DAYOFWEEK(date) 返回date所代表的一星期中的第几天(1~7)DAYOFMONTH(date) 返回date是一个月的第几天(1~31)DAYOFYEAR(date) 返回date是一年的第几天(1~366)DAYNAME(date) 返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE);FROM_UNIXTIME(ts,fmt) 根据指定的fmt格式,格式化UNIX时间戳tsHOUR(time) 返回time的小时值(0~23)MINUTE(time) 返回time的分钟值(0~59)MONTH(date) 返回date的月份值(1~12)MONTHNAME(date) 返回date的月份名,如:SELECT MONTHNAME(CURRENT_DATE); NOW() 返回当前的日期和时间QUARTER(date) 返回date在一年中的季度(1~4),如SELECT QUARTER(CURRENT_DATE); WEEK(date) 返回日期date为一年中第几周(0~53)YEAR(date) 返回日期date的年份(1000~9999)一些示例:复制代码代码如下:获取当前系统时间:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);返回两个日期值之间的差值(月数):SELECT PERIOD_DIFF(200302,199802);在Mysql中计算年龄:SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)),'%Y')+0 A S age FROM employee;这样,如果Brithday是未来的年月日的话,计算结果为0。
下面的SQL语句计算员工的绝对年龄,即当Birthday是未来的日期时,将得到负值。
SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birthday, '%Y') -(DATE_FORM AT(NOW(), '00-%m-%d') <DATE_FORMAT(birthday, '00-%m-%d')) AS age from empl oyee五、加密函数AES_ENCRYPT(str,key) 返回用密钥key对字符串str利用高级加密标准算法加密后的结果,调用AES_ENCRYPT的结果是一个二进制字符串,以BLOB类型存储AES_DECRYPT(str,key) 返回用密钥key对字符串str利用高级加密标准算法解密后的结果DECODE(str,key) 使用key作为密钥解密加密字符串strENCRYPT(str,salt) 使用UNIXcrypt()函数,用关键词salt(一个可以惟一确定口令的字符串,就像钥匙一样)加密字符串strENCODE(str,key) 使用key作为密钥加密字符串str,调用ENCODE()的结果是一个二进制字符串,它以BLOB类型存储MD5() 计算字符串str的MD5校验和PASSWORD(str) 返回字符串str的加密版本,这个加密过程是不可逆转的,和UNIX密码加密过程使用不同的算法。
SHA() 计算字符串str的安全散列算法(SHA)校验和示例:复制代码代码如下:SELECT ENCRYPT('root','salt');SELECT ENCODE('xufeng','key');SELECT DECODE(ENCODE('xufeng','key'),'key');#加解密放在一起SELECT AES_ENCRYPT('root','key');SELECT AES_DECRYPT(AES_ENCRYPT('root','key'),'key');SELECT MD5('123456');SELECT SHA('123456');六、控制流函数MySQL有4个函数是用来进行条件操作的,这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台。
MySQL控制流函数:CASE WHEN[test1] THEN [result1]...ELSE [default] END如果testN是真,则返回result N,否则返回defaultCASE [test] WHEN[val1] THEN [result]...ELSE [default]END 如果test和valN相等,则返回resultN,否则返回defaultIF(test,t,f) 如果test是真,返回t;否则返回fIFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否则返回arg1这些函数的第一个是IFNULL(),它有两个参数,并且对第一个参数进行判断。
如果第一个参数不是NULL,函数就会向调用者返回第一个参数;如果是NULL,将返回第二个参数。
如:SELECT IFNULL(1,2), IFNULL(NULL,10),IFNULL(4*NULL,'false');NULLIF()函数将会检验提供的两个参数是否相等,如果相等,则返回NULL,如果不相等,就返回第一个参数。
如:SELECT NULLIF(1,1),NULLIF('A','B'),NULLIF(2+3,4+1);和许多脚本语言提供的IF()函数一样,MySQL的IF()函数也可以建立一个简单的条件测试,这个函数有三个参数,第一个是要被判断的表达式,如果表达式为真,IF()将会返回第二个参数,如果为假,IF()将会返回第三个参数。
如:SELECTIF(1<10,2,3),IF(56>100,'true','false');IF()函数在只有两种可能结果时才适合使用。
然而,在现实世界中,我们可能发现在条件测试中会需要多个分支。