mysql常用函数汇总
数据库MySQL常用函数大全

数据库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。
MySQL函数大全

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数据库应用案例教程》教学课件 第10章 MySQL常用函数

执行SQL语句,使用函数ROUND(x)和ROUND(x,y)对数值进行四舍五入操 作,执行结果如下:
mysql> SELECT ROUND(100.144),ROUND(100.568),ROUND(100.144,2),ROUND(100.568,2);
+------------------------------+-----------------------------+------------------------------+-----------------------------+
—9—
10.1 数值函数
➢ 10.1.6 截取小数函数
函数TRUNCATE(x,y)的作用是对数值x进行截取,保留小数点后y位。其与ROUND()函数的区别是, ROUND()函数在截取值时会四舍五入;而TRUNCATE(x,y)函数直接截取值,并不进行四舍五入。
【实例10-7】
执行SQL语句,使用函数TRUNCATE(x,y)和ROUND(x,y)分别截取数值,执 行结果如下:
| ROUND(100.144) | ROUND(100.568) | ROUND(100.144,2) | ROUND(100.568,2) |
+------------------------------+-----------------------------+------------------------------+-----------------------------+
表102mysql中常用的字符串凼数及其功能lengthstrcharlengthstr返回字符串长度戒字符个数concatstr1str2strnconcatwsxstr1str2strn合并字符串insertstrxyinstrreplacestrab替换字符串lowerstrupperstr字符大小写转换leftstrxrightstrxsubstringstrxy获取字符串的一部分lpadstr1nstr2rpadstr1nstr2填充字符串ltrimstrrtrimstrtrimstr删除字符串左侧右侧戒两侧空格repeatstrn返回字符串str重复n次的结果locatestr1str返回子字符串的开始位置reversestr反转字符串13102字符串函数102字符串函数1021返回字符串长度和字符串中字符个数的函数凼数lengthstr用于返回字符串的长度一个汉字占用2个字节一个英文字符和数字占用1个字节
MySQL常用函数大全讲解

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函数返回值的数据类型对于正确使用和调用这些函数非常重要。
以下是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排名统计(常用功能函数)

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学习总结-MySQL-API函数描述

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中非常重要的一部分,它们可以帮助我们更方便、更高效地操作数据库。
下面是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: 格式化日期和时间信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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()函数在只有两种可能结果时才适合使用。
然而,在现实世界中,我们可能发现在条件测试中会需要多个分支。