SQL常用函数总结

  • 格式:doc
  • 大小:43.00 KB
  • 文档页数:4

建立自动增1的字段的表:
Create Table table_name
(
SERIALNO BIGINT NOT NULL GENERA TED ALWAYS AS IDENTITY( START WITH +1 , INCREMENT BY+1 , NO CACHE ),
ID BIGINT NOT NULL
generated always as identity (start with 1, increment by 1)

取前n条记录
SQL Server:
Select top n * from xtable
Oracle:
Select * from xtable where rownum <=n
DB2:
Select * from xtable fetch first n rows only
IQ:
Select top n * from xtable
取当前日期
SQL Server:
Select getdate()
Oracle:
Select sysdate from dual
DB2:
Select current timestamp from sysibm.sysdummy1
IQ:
Select getdate()
连接字符串
SQL Server:
Select 'Hello'+'Toone'
Oracle:
Select 'Hello'||'Toone' from dual
DB2:
Select 'Hello'||'Toone' from sysimb.sysdummy1
IQ:
Select 'Hello'||'Toone' from dual
空值转换
SQL Server:
SELECT userid,username,isnull(email,'0') FROM AUTH_USER
Oracle:
SELECT userid,username,nvl(email,'0') FROM AUTH_USER
DB2:
SELECT userid,username,value(email,'0') FROM AUTH_USER
IQ:
SELECT userid,username,isnull(email,'0') FROM AUTH_USER
类型转换
SQL Server:
SELECT convert(varchar,getdate(),20)
Oracle:
SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
DB2:
SELECT varchar(current timestamp) from sysibm.sysdummy1
IQ:
SELECT cast(字段名,varchar(50)) from table
SELECT convert(varchar, 20) from table
注1:
■SQL Server中转换日期格式改变Style参数:20 ;
■Oracle中转换日期格式改变格式化参数:yyyy-mm-dd hh24:mi:ss
‘yyyy’、’mm’、’dd’、’hh12’、’hh24’、’mi’、’ss’等;
■Db2中转换日期格式改变系统常量:current timestamp
‘current date’、’current time’等;
注2:
■SQL Server数据类型改变“数据类型参数”:int、varchar等;
■Oracle数据类型改变函数:to_char()、to_date()、to_number()等;■DB2数据类型改变函数:varchar()、int()、date()、time()等;
取值判断
SQL Server:
select caseConvert =
case when g.master_type ='system'?? then '管理员'
when g.master_type ='roletype' then '特殊角色'
else '普通用户'
end
from global_code g
Oracle:
Select case g.master_type
when 'system'?? then '管理员'
when 'roletype' then '特殊角色'
else '普通用户'
end
AS caseConvert
from global_code g
DB2:
Select case g.master_type
when 'system'?? then '管理员'
when 'roletype' then '特殊角色'
else '普通用户'
end
AS caseConvert
From global_code g
IQ:
也是用case when else end
位置
SQL Server:
select charindex('E','ABCDEF')
select patindex('%E%','ABCDEF') Oracle:
select instr('ABCDEF','E') from dual DB2:
Select locate('E','ABCDEF') from sysibm.sysdummy1
替换函数:
IQ:
Select replace(‘asdf’,’a’,’’) from table
日期分解函数
DB2
Select Date(date(‘2006-11-21’) +1 month ) from table 这个是月增1。

A Left join
B on ------------------------以左边为准,右边没有的补null
A Right join
B on ------------------------以右边为准,左边没有的补null。