一、内置函数对比
函数用途 | SqlServer | Oracle | 备注 |
字符串长度 | LEN('AA') | LENGTH('AA') | |
判断列是否为空,不为空返回列值,为空返回表达式值 | ISNULL(COL1,EXP) | NVL(COL1,EXP) | |
返回subStr在Str中的位置 | CHARINDEX(subStr,str) | INSTR(str,subStr) | 注意:两个数据库的函数参数相反 |
判断表达式1和表达式2是否相等,相等返回NULL,否则返回表达式1的值 | NULLIF(EXP1, EXP2) | NULLIF(EXP1, EXP2) | |
替换目标字符串t1中s1为r1 | REPLACE(T1,S1, R1) | REPLACE(T1,S1, R1) | |
截取字符串S1,从index开始借钱length长度 | SUBSTRING(s1,index,length) | SUBSTR(s1,index,length) | |
根据条件匹配返回结果 | case field when con1 then val1 when con2 then val2 else val3 end | decode(field,con1,val1,con2,val2,val3) | |
日期time格式化 | SELECT CONVERT(varchar, time, 111) ; SELECT CONVERT(VARCHAR, time, 23); SELECT CONVERT(VARCHAR, time, 20) | to_char(time,'yyyy/MM/dd'); to_char(time,'yyyy-MM-dd'); to_char(time,'yyyy-MM-dd HH:mm:ss'); | |
两个日期差值 | DATEDIFF( Hour, beginTime, endTime) | to_number(endTime - beginTime) * 24 |
二、自定义函数
Oracle自定义函数:
CREATE FUNCTION FUN1 -- 函数名
(
PARAM1 varchar2 -- 输入参数
)
RETURN varchar2 IS Result varchar2(200) -- 输出参数
BEGIN
SELECT @PARAM1 FROM DUAL;
RETURN (RESULT) -- 输出结果
END
SqlServer自定义函数:
CREATE FUNCTION dbo.FUN1 -- 函数名
(
@PARAM1 varchar(max) -- 输入参数
)
RETURNS varchar(max) -- 输出参数
AS
BEGIN
DECLARE
@RESULT varchar(200)
SET @Result = @PARAM1
RETURN @RESULT -- 输出结果
END