虽然转行了,一些东西还是跟各位认识的和不认识的兄弟们分享下,希望能有帮助~~~~~~
 

1 操作符
|| -- + 即:连接字符串的连字符需要改为 加号

2 核对所有系统函数
DECODE(c1,1,'as',2,'df','other') --
CASE  WHEN c1 = 1 THEN 'as'
      WHEN c1 = 2 THEN 'df'
      ELSE 'other'
END

SUBSTR -- SUBSTRING ,注意:该函数在执行时,第二个参数(起始位置)是从1开始的;
TRIM() -- LTRIM(RTRIM())
LENGTH -- LEN
CONCAT -- + 例如:select CONCAT('123','456') from DUAL  select '123' +'456'
INSTR  -- CHARINDEX,注意:这两个函数参数的位置刚好相反
例如:select INSTR('123456789','6') from DUAL 
select CHARINDEX('6','123456789')

TRUNC  -- 如果取整数 FOOLR,如果小数ROUND (123.23933333333345 ,2,1)
TRUNC 简单截取指定位数,如:select TRUNC(12.34567,2) from DUAL 返回 12.34
ROUND 由第三个参数判断,0为四舍五入,1为简单的截取,例如:
select ROUND(12.34567,2,1),Cast(ROUND(12.34567,2,1) as float),ROUND('12.34567',2,1) 将返回结果:12.34000, 12.34, 12.34
select ROUND(12.34567,2,0),Cast(ROUND(12.34567,2,0) as float),ROUND('12.34567',2,0) 将返回结果:12.35000, 12.35, 12.35

TO_NUMBER -- CAST( v1 AS FLOAT)

3 系统变量和特殊用法
SYSDATE -- GETDATE(),例如:SELECT SYSDATE FROM DUAL -- SELECT GETDATE()

4 日期操作转换

TO_DATE -- 可以去掉,但是要保证后面的日期字符串的格式,例如:
'2008-12-01'
'2008-12-01 00:00:00'
'2008-12-01 00:00:00.000'
注意:在SQL语句中,有关在一个日期范围的条件,建议大家写成下面的形式:
string strSQL = "SELECT TaskID FROM T_INFO_MAIN WHERE INSERTTIME BETWEEN '" +
Convert.ToDateTime(BeginDate).ToString("yyyy-MM-dd") + " 00:00:00' AND '" +
Convert.ToDateTime(EndDate).ToString("yyyy-MM-dd") + " 23:59:59' ";

直接将日期型的字段转为标准的字符型的日期,请参考下面的语句:
select getdate(),convert(char(10),getdate(),120),convert(char(19),getdate(),120)


TO_CHAR -- 可以去掉,需要指定输出格式CONVERT
CONVERT(char(10),[date1],120)

日期函数
ADD_MONTHS(SYSDATE,12)-- DATEADD(MM,12,GETDATE())
该函数有以下参数用法:DATEADD(YYYY,12,GETDATE()) 加年份、DATEADD(DD,12,GETDATE()) 加日期、DATEADD(HH,12,GETDATE()) 加小时数

日期计算
SYSDATE - StartDate -- DATEDIFF(DD, StartDate,GETDATE())
注意:在SQL中该函数是用第三个参数减去第二个参数的。
该函数有以下参数用法:DATEDIFF(HH, StartDate,GETDATE())以小时数相减、DATEDIFF(WK, StartDate,GETDATE())以周数相减

要取日期中特定数据,可用DatePart 和 DateName 来实现,下面的两条语句的说明其区别:
datename 返回代表指定日期的指定日期部分的字符串:
Select getdate(),DateName(WK,GetDate())
datepart 返回代表指定日期的指定日期部分的整数:
Select getdate(),DatePart(WK,GetDate()) 

以下为有关日期函数中用到的日期规则名称及其简写:
日期部分 缩写
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
Hour hh
minute mi, n
second ss, s
millisecond ms


6 非SQL标准外连接
SELECT A.id1,B.idNAME
FROM Table_1 AS A,Table_2 AS B
WHERE A.id1=B.ID(+)

SELECT A.id1,B.idNAME
FROM Table_1 AS A LEFT JOIN Table_2 AS B ON A.id1=B. ID

7 ORACLE schema 引用
ORACLE schema对应SQL server database
SCOTT.DEPT -- SCOTT.DBO.DEPT
注意:在SQL中调用当前库中自定义函数时,请加前缀 dbo.,即给这些对象要上它的限定用户;跨库访问(不是跨服务器)时,请依照“[数据库名称].[dbo].[表名称]”来书写。


8 ROLLUP
GROUP BY BCCODE,SCCODE,ROLLUP(STREETCODE)
SELECT id1
      ,id2
      ,id3
      ,SUM(num1)
FROM test.dbo.Table_1
GROUP BY id1
      ,id2
      ,id3 WITH ROLLUP
HAVING GROUPING(id2)=0

9 用户自定义函数名前面加dbo.
dbo.函数名

10 ROWNUM
如果功能一致建议使用TOP代替
ROWNUM <= 20 -- TOP(20)
如果在分页的使用,查询包含排序,可使用ROW_NUMBER () OVER ( ORDER BY ddd)
效率上应该和排序差不多的。
分页算法举例:
select * from (
Select ROW_NUMBER() OVER (order by [排序字段]asc ) as ROWNUM,* from [表名称] where [查询条件]
) as tmpTable  where  ROWNUM between [起始行号] and [结束行号]