DRDS中可用在mysql执行的函数

整体函数分为解析和执行部分

函数解析: 主要指解析纯SQL中的函数定义,如果函数可以被正常解析,意味着如果用户SQL中带着了拆 分字段,函数都可以下发到MySQL上进行执行 
函数执行: 主要指用户SQL不能完全下推到MySQL得到结果的情况,需要DRDS层进行二次计算时的函 数支持列表.

示例:
1. select count(*) from users where user_id = 1;  
user_id为切分条件, count(*)函数主要就是一个SQL解析然后发给 MySQL执行,这一类的行为就取决于DRDS的函数解析的支持能力. 
2. select count(*) from users; 
用户SQL未带切分条件, DRDS会对每个分片返回的count结果,在DRDS层面重新计算出一 个全局的count(*)结果返回给用户,这一类的行为就取决于DRDS的函数执行的支持能力.

操作符函数
AND,&& = BETWEEN…AND… BINARY & ~ ^ DIV / <==> = >= >
IS NOT NULL IS NOT IS NULL IS << <= < LIKE -
%,MOD NOT BETWEEN…AND… !=,<> NOT LIKE NOT REGEXP NOT,! OR
+ REGEXP >> RLIKE * - XOR Coalesce GREATEST LEAST STRCMP
流程控制函数
CASE IF() IFNULL() NULLIF()
字符串函数
ASCII() 获取字符或字符串第一个的ascll码值
BIN() 将长整型数值转换为二进制数值
BIT_LENGTH() 获取字符串的比特长度
在GBK 编码下:1个中文字符占2个字节,1个字节占8位
在UTF-8 编码:1个中文字符占3个字节,1个字节占8位
1个英文字符占1个字节,1个字节占8位
CHAR_LENGTH()/CHARACTER_LENGTH()返回字符串长度
CHAR() 输入ascll码值返回对应的字符
CONCAT_WS(separator,str1,str2,…) separator为分隔符,将第二个及之后的非null值拼接起来
CONCAT() 将第一个及之后的(不可为)null值拼接起来
ELT(N,str1,str2,str3,…) 如果N=1,返回str1;如果N=2,返回str2;如果N小于1或大于N返回null
EXPORT_SET()
FIELD() eg:SELECT * FROM account ORDER BY FIELD(accid,4,2,3) DESC;部分数据按照field的规则排序
FIND_IN_SET(str,strlist) str要查询的字符串,strlist 字段名 参数以”,”分隔 如 (1,2,6,8),查询字段(strlist)中包含(str)的结果,返回结果为null或记录
FORMAT(munber,mun) FORMAT函数在mysql中是数据内容格式化的,第一个参数为需要格式化的数值,第二个参数是需要保留小数点后的位数
HEX() eg:SELECT HEX(‘love’);可以用HEX()函数将一个字符串或数字转换为十六进制格式的字符串
UNHEX() eg:select unhex(616263);把十六进制格式的字符串转化为原来的格式
INSERT() eg:select INSERT(“123456789”,1,3,“qwe”);结果:qwe456789
INSTR() eg:SELECT *,INSTR( account, ‘5’ ) FROM account ORDER BY INSTR( account, ‘5’ ) > 0 DESC;返回第二个参数在第一个参数中的位置
LCASE() 函数把字段的值转换为小写
left(str,len) 返回字符串str的左端len个字符
LENGTH()
LIKE
LOCATE() 返回字符串substr在字符串str的第pos个位置起第一次出现的位置
LOWER(str) 返回小写的字符串str
LPAD(str,len,padstr) 用字符串padstr填补str左端直到字串长度为len并返回
LTRIM(str)返回删除了左空格的字符串str
MAKE_SET()
MID(str,pos,len) 返回字符串str的位置pos起len个字符
NOT LIKE
NOT REGEXP
OCT(n) 把n转为八进制值并以字串返回(n是bigint数字,等价于conv(n,10,8))
OCTET_LENGTH(str) 返回字符串str的长度(对于多字节字符char_length仅计算一次)
ORD(str)如果字符串str句首是单字节返回与ascii()函数返回的相同值。如果是一个多字节字符,以格式返回((first byte ascii code)*256+(second byte ascii code))[*256+third byte asciicode…]
POSITION(substr in str) 返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)
QUOTE()
REPEAT(str,count)返回由count个字符串str连成的一个字符串(任何参数为null时返回null,count<=0时返回一个空字符串)
REPLACE(str,from_str,to_str) 用字符串to_str替换字符串str中的子串from_str并返回
REVERSE(str) 颠倒字符串str的字符顺序并返回
RIGHT(str,len) 返回字符串str的右端len个字符
RPAD(str,len,padstr) 用字符串padstr填补str右端直到字串长度为len并返回
RTRIM(str) 返回删除了右空格的字符串str
SPACE() 返回由n个空格字符组成的一个字符串
STRCMP()
SUBSTR()
SUBSTRING_INDEX(str,delim,count)返回从字符串str的第count个出现的分隔符delim之后的子串(count为正数时返回左端,否则返回右端子串)
SUBSTRING(str,pos)/SUBSTRING(str from pos) 返回字符串str的位置pos起的一个子串
TRIM([[both | leading | trailing] [remstr] from] str) 返回前缀或后缀remstr被删除了的字符串str(位置参数默认both,remstr默认值为空格)
UCASE(str) 返回大写的字符串str
UPPER(str) 返回大写的字符串str
数学函数
ABS(n)返回n的绝对值
ACOS(n) 返回n反余弦(n是余弦值,在-1到1的范围,否则返回null)
ASIN(n) 返回n反正弦值
ATAN2(n)/ATAN(n) 返回n的反正切值
CEIL(n)/CEILING(n) 返回不小于n的最小整数值
CONV(n,from_base,to_base) 对数字n进制转换,并转换为字串返回(任何参数为null时返回null,进制范围为2-36进制,当to_base是负数时n作为有符号数否则作无符号数,conv以64位点精度工作)
COS(n) 返回n的余弦值
COT(n) 返回n的余切
CRC32()
DEGREES(n) 把n从弧度变换为角度并返回
DIV
EXP(n) 返回值e的n次方(自然对数的底)
FLOOR(n) 返回不大于n的最大整数值
GREATEST(x,y,…) 返回最大值
LEAST(x,y,…) 返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)
LN()
LOG10(n) 返回n以10为底的对数
LOG2() 返回n以2为底的对数
LOG(n) 返回n的自然对数
MOD(n,m) 取模运算,返回n被m除的余数(同%操作符)
PI() 返回圆周率
POW(x,y)/POWER(x,y) 返回值x的y次幂
PADIANS(n) 把n从角度变换为弧度并返回
RAND(n) 返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值)
ROUND(n,d) 返回n的四舍五入值,保留d位小数(d的默认值为0)
SIGN(n) 返回参数的符号(为负数:-1、零:0、正数:1)
SIN(n) 返回n的正弦值
SQRT(n) 返回非负数n的平方根
TAN(n) 返回n的正切值
TRUNCATE(n,d) 保留数字n的d位小数并返回
时间函数
ADDDATE(date,interval expr type)/DATE_ADD(date,interval expr type) 对日期时间进行加法运算
ADDTIME()
CURDATE()/CURRENT_DATE() 以’yyyy-mm-dd’或yyyymmdd格式返回当前日期值(根据返回值所处上下文是字符串或数字)
CURTIME()/CURRENT_TIME()以’hh:mm:ss’或hhmmss格式返回当前时间值(根据返回值所处上下文是字符串或数字)
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)
 %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), 这里星期一是星期的第一天
 %% 字符% )
SUBDATE(date,interval expr type)/DATE_SUB(date,interval expr type) 对日期时间进行减法运算
DATE()
DATEDIFF()
DAY()
DAYNAME(date) 返回date是星期几(按英文名返回)
DAYOFMONTH(date) 返回date是一月中的第几日(在1到31范围内)
DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准)
DAYOFYEAR(date) 返回date是一年中的第几日(在1到366范围内)
EXTRACT()
FROM_DAYS(n) 给出西元0年至今多少天返回date值(不计算1582年以前)
FROM_UNIXTIME(unix_timestamp) 以’yyyy-mm-dd hh:mm:ss’或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符串或数字)
GET_FORMAT()
HOUR(time) 返回time的小时数(范围是0到23)
LAST_DAY()
LOCALTIME()
LOCALTIMESTAMP,LOCALTIMESTAMP()
MAKEDATE()
MAKETIME()
MICROSECOND()
MINUTE(time) 返回time的分钟数(范围是0到59)
MONTH(date) 返回date中的月份数值
MONTHNAME(date)返回date是几月(按英文名返回)
NOW()/SYSDATE()/CURRENT_TIMESTAMP() 以’yyyy-mm-dd hh:mm:ss’或yyyymmddhhmmss格式返回当前日期时间(根据返回值所处上下文是字符串或数字)
PERIOD_ADD(p,n) 增加n个月到时期p并返回(p的格式yymm或yyyymm)
PERIOD_DIFF(p1,p2)返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm)
QUARTER(date) 返回date是一年的第几个季度
SEC_TO_TIME(seconds) 以’hh:mm:ss’或hhmmss格式返回秒数转成的time值(根据返回值所处上下文是字符串或数字)
SECOND(time) 返回time的秒数(范围是0到59)
STR_TO_DATE()
SUBTIME()
TIME_FORMAT(time,format) 和date_format()类似,但time_format只处理小时、分钟和秒(其余符号产生一个null值或0)
TIME_TO_SEC(time) 返回time值有多少秒
TIME()
TIMEDIFF()
TIMESTAMP()
TIMESTAMPADD()
TIMESTAMPDIFF()
TO_DAYS(date) 返回日期date是西元0年至今多少天(不计算1582年以前)
UNIX_TIMESTAMP()
UTC_DATE()
UTC_TIME()
UTC_TIMESTAMP()
WEEK(date,first) 返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始)
WEEKDAY() 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)
WEEKOFYEAR()
YEAR(date) 返回date的年份(范围在1000到9999)
类型转换函数
BINARY()
CAST(字段 as 数据类型)
CONVERT(字段,数据类型)

mysql时间与字符串相互转换:https://www.cnblogs.com/wangyongwen/p/6265126.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值