数学函数
序号 | 函数功能 | SQL Server用法 | Oracle用法 |
1 | 绝对值 | select abs(-1) value | select abs(-1) value from dual |
2 | 取整(大) | select ceiling(-1.001) value | select ceil(-1.001) value from dual |
3 | 取整(小) | select floor(-1.001) value | select floor(-1.001) value from dual |
4 | 取整(截取) | select cast(-1.002 as int) value | select trunc(-1.002) value from dual |
5 | 四舍五入 | select round(1.23456,4) value | select round(1.23456,4) value from dual |
6 | 为底的幂 | select Exp(1) value | select Exp(1) value from dual |
7 | 取e为底的对数 | select log(2.7182818284590451) | select ln(2.7182818284590451) |
8 | 取10为底对数 | select log10(10) | select log(10,10) |
9 | 取平方 | select SQUARE(4) | select power(4,2) |
10 | 取平方根 | select SQRT(4) | select SQRT(4) |
11 | 求任意数为底的幂 | select power(3,4) | select power(3,4) |
12 | 取随机数 | select rand() | select sys.dbms_random.value(0,1) |
13 | 取符号 | select sign(-8) | select sign(-8) |
14 | 圆周率 | SELECT PI() | ? |
15 | sin,cos,tan | select sin(PI()/2) | select sin(PI()/2) |
16 | 求集合最大值 | select max(value) value from | select greatest(1,-2,4,3) value from dual |
17 | 求集合最小值 | select min(value) value from | select least(1,-2,4,3) value from dual |
18 | 处理null值(F2中的null以10代替) | select F1,IsNull(F2,10) value from Tbl | select F1,nvl(F2,10) value from Tbl |
?
数值间比较
序号 | 函数功能 | SQL Server用法 | Oracle用法 |
1 | 求字符序号 | select ascii('a') | select ascii('a') value from dual |
2 | 从序号求字符 | select char(97) value | select chr(97) value from dual |
3 | 连接 | select '11'+'22'+'33' value | select CONCAT('11','22')||33 value from dual |
4 | 子串位置 | select charindex('s','sdsq',2) value | select instr('sdsq','s',2) value from dual |
5 | 模糊子串的位(返回2,参数去掉中间%则返回7) | select patindex('%d%q%','sdsfasdqe') value | select INSTR('sdsfasdqe','sd',1,2) value from dual?返回6 |
6 | 求子串 | select substring('abcd',2,2) value | select substr('abcd',2,2) value from dual |
7 | 子串代替(返回aijklmnef) | SELECT STUFF('abcdef', 2, 3, 'ijklmn') value | SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual |
8 | 子串全部替换 | 没发现 | select Translate('fasdbfasegas','fa','我' ) value from dual |
9 | 长度 | Len或datalength | length |
10 | 大小写转换 | lower,upper | lower,upper |
11 | 单词首字母大写 | 没发现 | select INITCAP('abcd dsaf df') value from dual |
12 | 左补空格 | select space(10)+'abcd' value | select LPAD('abcd',14) value from dual |
13 | 右补空格 | select 'abcd'+space(10) value | select RPAD('abcd',14) value from dual |
14 | 删除空格 | ltrim,rtrim | ltrim,rtrim,trim |
15 | 重复字符串 | select REPLICATE('abcd',2) value | lpad('d',6,'0'),rpad(‘d’,6,’0’) |
16 | 发音相似性比较(这两个单词返回值一样,发音相同) | SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') | SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual |
?
日期函数
序号 | 函数功能 | SQL Server用法 | Oracle用法 |
1 | 系统时间 | select getdate() value | select sysdate value from dual |
? | 前后几日 | 直接与整数相加减 | 直接与整数相加减 |
? | 求日期 | select convert(char(10),getdate(),20) value | select trunc(sysdate) value from dual select to_char(sysdate,'yyyy-mm-dd') value from dual |
? | 求时间 | select convert(char(8),getdate(),108) value | select to_char(sysdate,'hh24:mm:ss') value from dual |
? | 取日期时间的其他部分 | DATEPART?和?DATENAME?函数?(第一个参数决定) | to_char函数?第二个参数决定 |
? | 参数---------------------------------需要补充 | ||
? | 当月最后一天 | 没发现 | select lsat_day(sysdate) value from dual |
? | 本星期的某一天(比如星期日) | 没发现 | select Next_day(sysdate,7) vaule FROM DUAL; |
? | 字符串转时间 | 可以直接转或者select cast('2004-09-08'as datetime) value | select To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL; |
? | 求两日期某一部分的差(比如秒) | select datediff(ss,getdate(),getdate()+12.3) value | 直接用两个日期相减(比如d1-d2=12.3) |
? | 根据差值求新的日期(比如分钟) | select dateadd(mi,8,getdate()) value | SELECT sysdate+8/60/24 vaule FROM DUAL; |