一、自增序列:
DB2:
create table TestTable
(
recordindex integer identity generated as always,
stringDateTime varchar(50),
TrueDateTime timestamp
);
SQLServer:
create table TestTable
(
recordindex int identity,
stringDateTime varchar(50),
TrueDateTime datetime
)
二、記錄篩選:
DB2:
strTemp = "select * from TestTable fetch first 5 rows only";
SQLServer:
strTemp = "select top 5 * from TestTable";
三、時間函數:
SQLServer:
strTmpDB2 = "DELETE 登入日誌表 WHERE DATEDIFF(DAY,登入時間,getdate())>"+Days;
DB2:
strTmpDB2 = "DELETE 登入日誌表 WHERE Date(登入時間) - Date('"+System.DateTime.Now.ToString()+"') >"+Days;
SQLServer:
strTmpDB2 +=" and Cast(辦件表.受理日期 as datetime)>='"+searchInfo.BeginDate+"' ";
DB2:
strTmpDB2 +=" and Date(辦件表.受理日期)>= Date('"+searchInfo.BeginDate+"')";
SQLServer:
strSQL[Lilosoft.CoSpace.Util.DBType.DB2] = "INSERT INTO 公文交換髮送表(公文編號,接收單位,分發時間,發送狀態) VALUES (@strCode,@strUnit,getdate(),@strMsg)";
DB2:
strSQL[Lilosoft.CoSpace.Util.DBType.DB2] = "INSERT INTO 公文交換髮送表(公文編號,接收單位,分發時間,發送狀態) VALUES (@strCode,@strUnit,timestamp('"+ System.DateTime.Now.ToString() +"'),@strMsg)";
四、類型檢查
SQLServer:
varchar類型與int類型之間可以進行隱式轉換和串連計算
DB2:
varchar類型與int類型之間不能進行隱式轉換和串連計算
修改 角色許可權表 角色序號欄位 欄位類型為integer,原類型為varchar
修改 辦件部門表 部門序號欄位 欄位類型為integer,原類型為varchar
五,自增返回
SQLServer:
"SELECT @@IDENTITY"
DB2:
"select max(序號) from TableA"
六,對象所有
SQLServer:
"select * from dbo.TableA"
DB2:
"select * from TableA"
七、類型檢查
SQLServer:
bit 型能被DotNet預設轉換為Bool型
DB2:
smallint型不能夠被DotNet預設轉換為Bool型
八、標準支援
SQLServer:
delete TableA where a = a
DB2:
delete from TableA where a = a
九、日期格式
辦件表中受理日期欄位類型為varchar(8),欄位值形如:20060113
SQLServer:
"and Cast(辦件表.受理日期 as datetime)>='"+strBeginDate+"' "
DB2:
"and Date(Concat(Concat(Concat(Concat(Substr(辦件表.受理日期,1,4),'-'),Substr(辦件表.受理日期,5,2)),'-'),Substr(辦件表.受理日期,7,2)))<= Date('"+strBeginDate+"')"