數學函數
序号 | 函數功能 | 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 1 value union select -2 value union select 4 value union select 3 value)a | select greatest(1,-2,4,3) value from dual |
17 | 求集合最小值 | select min(value) value from (select 1 value union select -2 value union select 4 value union select 3 value)a | 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函數 第二個參數決定 | |
參數---------------------------------需要補充 year yy, yyyy quarter qq, q (季度) month mm, m (m O無效) dayofyear dy, y (O表星期) day dd, d (d O無效) week wk, ww (wk O無效) weekday dw (O不清楚) Hour hh,hh12,hh24 (hh12,hh24 S無效) minute mi, n (n O無效) second ss, s (s O無效) millisecond ms (O無效) | |||
當月最後一天 | 沒發現 | 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 (d1-d2)*24*60*60 vaule FROM DUAL; | |
根據內插補點求新的日期(比如分鐘) | select dateadd(mi,8,getdate()) value | SELECT sysdate+8/60/24 vaule FROM DUAL; |