一.数学函数
功能 | 函数名 | 用法 |
绝对值 | ABS() | |
指数 | POWER() | POWER(FWeight,-0.5) |
平方根 | SQRT() | |
求随机数 | RAND() | |
舍入到最大整数 | CEILING() | |
舍入到最小整数 | FLOOR() | |
四舍五入 | ROUND(m) | |
四舍五入 | ROUND(m,d) | d是保留的小数位数 |
正弦 | SIN() | |
余弦 | COS () | |
反正弦 | ASIN() | |
反余弦 | ACOS() | |
正切 | TAN() | |
反正切 | ATAN() | |
2个变量的反正切 | ATAN2(X,Y) | Y是象限 |
余切 | COT() | |
圆周率 | PI() | |
弧度制转换为角度制 | DEGREES () | |
角度制转换为弧度制 | RADIANS () | |
求符号 | SIGN() | 大于0 则返回1,等于0 则返回0,小于0 则返回-1 |
求余数 | MOD() | |
自然对数 | LOG () | |
以10为底的对数 | LOG10() | |
求幂 | POWER(X,Y) | |
二.字符串函数
功能 | 函数名 | 用法 |
计算字符串长度 | LENGTH() | |
字符串转换为小写 | LOWER() | |
字符串转换为大写 | UPPER () | |
截去字符串左侧空格 | LTRIM() | |
截去字符串右侧空格 | RTRIM () | |
截去字符串两侧的空格 | TRIM () | |
取子字符串 | SUBSTRING(string,start_position,length) | |
计算子字符串的位置 | INSTR(string,substring) | |
从左侧开始取子字符串 | LEFT (string,length) | |
字符串替换 | REPLACE(string,string_tobe_replace,string_to_replace) | |
得到字符的ASCII码 | ASCII() | |
得到一个ASCII码数字对应的字符 | CHAR() | |
发音匹配度 | SOUNDEX() | |
时间日期函数
功能 | 函数名 | 用法 |
取得当前日期时间 | NOW() | mysql |
日期增减 | DATE_ADD (date,INTERVAL expr type) | SELECT FBirthDay, DATE_ADD(FBirthDay,INTERVAL 1 WEEK) as w1, DATE_ADD(FBirthDay,INTERVAL 2 MONTH) as m2, DATE_ADD(FBirthDay,INTERVAL 5 QUARTER) as q5 FROM T_Person |
计算日期差额 | DATEDIFF(date1,date2) | |
计算一个日期是星期几 | DAYNAME(FBirthDay) | |
取得日期的指定部分 | DATE_FORMAT(date,format) | |
三.类型转换
mysql
CAST(expression AS type)
CONVERT(expression,type)
类型 | 缩写 | 说明 |
BINARY | | BINARY字符串 |
CHAR | | 字符串类型 |
DATE | | 日期类型 |
DATETIME | | 时间日期类型 |
SIGNED INTEGER | SIGNED | 有符号整数 |
TIME | | 时间类型 |
UNSIGNED INTEGER | UNSIGNED | 无符号整数 |
oracle
TO_CHAR(expression,format); 将时间日期类型或者数值类型的数据转换为字符串
TO_DATE (expression,format); 将字符串转换为时间类型
TO_NUMBER (expression,format); 将字符串转换为数值类型
HEXTORAW() 将十六进制格式的数据转换为原始值
RAWTOHEX() 将原始值转换为十六进制格式的数据。
TO_MULTI_BYTE() 将字符串中的半角字符转换为全角字符
TO_SINGLE_BYTE() 将字符串中的全角字符转换为半角字符
四.空值处理
COALESCE ( expression,value1,value2……,valuen)
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。如果expression不为空值则返回 expression;否则判断value1是否是空值,如果value1不为空值则返回value1;否则判断value2是否是空值,如果 value2不为空值则返回value3;……以此类推,如果所有的表达式都为空值,则返回NULL。
COALESCE()函数的简化版
MYSQL: IFNULL(expression,value)
Oracle: NVL(expression,value)
NULLIF ( expression1 , expression2 )
如果两个表达式不等价,则NULLIF 返回第一个expression1的值。如果两个表达式等价,则NULLIF 返回第一个expression1类型的空值。也就是返回类型与第一个expression相同。
CASE函数
SELECT
FName,
(CASE FName
WHEN ‘Tom’ THEN ‘GoodBoy’
WHEN ‘Lily’ THEN ‘GoodGirl’
WHEN ‘Sam’ THEN ‘BadBoy’
WHEN ‘Kerry’ THEN ‘BadGirl’
ELSE ‘Normal’
END) as isgood
FROM T_Person
SELECT
FName,
FWeight,
(CASE
WHEN FWeight<40 THEN ‘thin’
WHEN FWeight>50 THEN ‘fat’
ELSE ‘ok’
END) as isnormal
FROM T_Person
五.各数据库系统独有函数
1.MYSQL中的独有函数
IF()函数
SELECT FName, FWeight,
IF(FWeight>50,’太胖’,‘正常’) AS ISTooFat
FROM T_Person
CONV()函数用于对数字进行进制转换,比如将十进制的26转换为2进制显示,其参数格式如下:
CONV(N,from_base,to_base)
将每个人的体重四舍五入为整数,然后以二进制的形式显示它们:
SELECT FWeight,Round(FWeight),
CONV(Round(FWeight),10,2)
FROM T_Person
填充函数
LPAD(str,len,padstr)
RPAD(str,len,padstr)
SELECT FName,LPAD(FName,5,’*‘),RPAD(FName,5,’*‘) FROM T_Person
REPEAT()用来得到一个子字符串重复了若干次所组成的字符串
REPEAT(str,count)
字符串颠倒
REVERSE() 函数用来将一个字符串的顺序颠倒
字符串的集合操作
SELECT FName,
ELT(FLevel, ‘VIP客户’, ‘高级客户’, ‘普通客户’)
FROM T_Customer
SELECT FName,
FIELD(FCustomerTypeName, ‘VIP’, ‘会员’, ‘普通客户’)
FROM T_Customer
计算集合中的最大最小值
SELECT GREATEST(2,7,1,8,30,4,3,99,2,222,12),
LEAST(2,7,1,8,30,4,3,99,2,222,12)
辅助功能函数
DATABASE()函数返回当前数据库名;
VERSION()函数以一个字符串形式返回MySQL 服务器的版本;
USER()函数(这个函数还有SYSTEM_USER、SESSION_USER两个别名)返回当前MySQL 用户名。
ENCODE(str,pass_str)函数使用pass_str 做为密钥加密str,函数的返回结果是一个与string 一样长的二进制字符。如果希望将它保存到一个列中,需要使用BLOB列类型。
DECODE()函数使用pass_str 作为密钥解密经ENCODE加密后的字符串crypt_str。
MD5(string)、SHA1(string)两个函数就是分别用来使用MD5算法和SHA1算法来进行字符串的摘
要计算的函数
2.Oracle中的独有函数
填充函数
SELECT FName,
LPAD(FName,5,’*‘),
RPAD(FName,5,’#‘)
FROM T_Person
返回当月最后一天
SELECT FName,FBirthDay,
LAST_DAY(FBirthDay)
FROM T_Person
WHERE FBirthDay IS NOT NULL
计算最大最小值
SELECT GREATEST(2,7,1,8,30,4,5566,99,2,222,12),
LEAST(2,7,1,8,30,4,3,99,-2,222,12)
FROM DUAL
辅助功能函数
取得当前登录用户名,注意,不能用括号
SELECT USER
FROM DUAL
USERENV()函数用来取得当前登录用户相关的环境信息
参数 | 说明 |
‘ISDBA’ | 如果当前登录用户有DBA的角色则返回TRUE,否则返回FALSE |
‘LANGUAGE’ | 返回当前登录用户使用的语言和字符集,返回格式为“语言.字符集” |
‘TERMINAL’ | 返回当前登录用户的操作系统标识 |
‘SESSIONID’ | 返回当前登录用户的会话标识 |
‘ENTRYID’ | 返回当前登录用户的认证标识 |
‘LANG’ | 返回当前用户使用的语言,它比’LANGUAGE’的返回值短 |
‘INSTANCE’ | 返回当前实例的标识 |
SELECT USERENV(‘ISDBA’) AS ISDBA,
USERENV(‘LANGUAGE’) AS LANGUAGE,
USERENV(‘LANG’) AS LANG
FROM DUAL