SPACE(n)
返回n个空格
SELECT CONCAT(SPACE(5), '*') FROM DUAL;
STRCMP(s1,s2)
比较字符串s1,s2的ASCII码值的大小
SELECT STRCMP('abc','abe'), STRCMP('abe','abc'), STRCMP('abc','abc') FROM DUAL;
SUBSTR(s,index,len)
返回从字符串s的index位置其len个字符,作用与SUBSTRING(s,n,len)、 MID(s,n,len)相同
SELECT SUBSTR('hello',2,2) FROM DUAL;
LOCATE(substr,str)
返回字符串substr在字符串str中首次出现的位置,作用于POSITION(substr IN str)、INSTR(str,substr)相同。未找到,返回0
SELECT LOCATE('lll','hello'), LOCATE('ll','hello'), LOCATE('l','hello') FROM DUAL;
ELT(m,s1,s2,…,sn)
返回指定位置的字符串,如果m=1,则返回s1,如果m=2,则返回s2,如果m=n,则返回sn
FIELD(s,s1,s2,…,sn)
返回字符串s在字符串列表中第一次出现的位置
FIND_IN_SET(s1,s2)
返回字符串s1在字符串s2中出现的位置。其中,字符串s2是一个以逗号分
隔的字符串
SELECT ELT(2,'a','b','c','d'), FIELD('mm','gg','jj','mm','dd','mm'), FIND_IN_SET('mm','gg,mm,jj,dd,mm,gg') FROM DUAL;
REVERSE(s)
返回s反转后的字符串
SELECT REVERSE('abcdefg') FROM DUAL;
NULLIF(value1,value2)
比较两个字符串,如果value1与value2相等,则返回NULL,否则返回
value1
SELECT NULLIF('mysql','mysql'),NULLIF('mysql', '') FROM dual;
4. 日期和时间函数
4.1 获取日期、时间
CURDATE() ,CURRENT_DATE()
返回当前日期,只包含年、月、日
CURTIME() , CURRENT_TIME()
返回当前时间,只包含时、分、秒
NOW() / SYSDATE() / CURRENT_TIMESTAMP() / LOCALTIME() / LOCALTIMESTAMP()
返回当前系统日期和时间
UTC_DATE()
返回UTC(世界标准时间)日期
UTC_TIME()
返回UTC(世界标准时间)时间
代码示例
SELECT CURDATE(), CURRENT_DATE(), CURTIME(), NOW(), SYSDATE(), UTC_DATE(), UTC_TIME() FROM DUAL;
4.2 日期与时间戳的转换
UNIX_TIMESTAMP()
以UNIX时间戳的形式返回当前时间。SELECT UNIX_TIMESTAMP() - >1634348884
UNIX_TIMESTAMP(date)
将时间date以UNIX时间戳的形式返回。
FROM_UNIXTIME(timestamp)
将UNIX时间戳的时间转换为普通格式的时间
代码示例
SELECT UNIX_TIMESTAMP(), UNIX_TIMESTAMP('2021-10-01 12:12:32'), FROM_UNIXTIME(1635173853), FROM_UNIXTIME(1633061552) FROM DUAL;
4.3 获取月份、星期、星期数、天数等函数
YEAR(date) / MONTH(date) / DAY(date)
返回具体的日期值
HOUR(time) / MINUTE(time) / SECOND(time)
返回具体的时间值
MONTHNAME(date)
返回月份:January,…
DAYNAME(date)
返回星期几:MONDAY,TUESDAY…SUNDAY
WEEKDAY(date)
返回周几,注意,周1是0,周2是1,…,周日是6
QUARTER(date)
返回日期对应的季度,范围为1~4
WEEK(date) , WEEKOFYEAR(date)
返回一年中的第几周
DAYOFYEAR(date)
返回日期是一年中的第几天
DAYOFMONTH(date)
返回日期位于所在月份的第几天
DAYOFWEEK(date)
返回周几,注意:周日是1,周一是2,…,周六是7
代码示例
SELECT YEAR(CURDATE()), MONTH(CURDATE()), DAY(CURDATE()), HOUR(CURTIME()), MINUTE(NOW()), SECOND(SYSDATE()), MONTHNAME('2021-10-26'), DAYNAME('2021-10-26'), WEEKDAY('2021-10-26'), QUARTER(CURDATE()), WEEK(CURDATE()), DAYOFYEAR(NOW()), DAYOFMONTH(NOW()), DAYOFWEEK(NOW()) FROM DUAL;