asp、delphi、oracle的技术文档总结
2009-12-03 10:41
411 查看
1) Delphi向oracle中传递参数 如oracle中的参数名为erpcx
答:如果想从表里取值到oracle,则erpcx:=trim(aq1.fieldbyname('erpcx').AsString);
否则直接用控件名字
语句为
with aperp do
begin
connection:=dm.ADOCerp;
parameters.Clear;
procedurename:='pc_erpbominquery';
parameters.CreateParameter(erpcx,ftstring,pdinput,60,erpcx); 此句为传参数语句
否则直接用 Parameters.CreateParameter('@erpcx',ftString,pdInput,100,edit5.text);
ExecProc;
end;
2)sql取四舍五入职 round(字段名,小数点后位数如取整数为0)
3)sql连接同一服务器的不同表的数据
答:select * from 数据库名.dbo.表名
4)要想从多个表里查数据,a里有5个 b里有3个 c里有2个显示时该如何去掉重复的部分呢
如 表a 表b 表c
id education id guanxi id work
0001 1大学 0001 父子 0001 1公司
0001 2大学 0001 母子 0001 2公司
0001 3大学 0001 姐妹
0001 4大学
答:alter table a add px int identity(1,1)
go
alter table b add px int identity(1,1)
go
alter table c add px int identity(1,1)
go
select a.id,a.education,guanxi=isnull(b.guanxi,''),[work]=isnull(c.[work],'') from a
left join b on a.px=b.px
left join c on a.px=c.px
go
alter table a drop column px
go
alter table b drop column px
go
alter table c drop column px
5)sql查询重复数据方法
select erpcx from n7cpl
group by erpcx
having Count(erpcx)>1
6)sql日期函数
Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --月的第一天
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) -- 周一第一天
Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) --季度的第一天
Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --上月最后一天
select datediff(day,2009-05-03,2009-05-01) --计算间隔天数
select dateadd(day,2,'2009-06-30 08:08:00') -- 计算2天后的日期
7)sql查询表中一半的数据(50%)
SELECT TOP 50 PERCENT * FROM Persons
8)sql类型转换
CAST([字段名] as varchar(4000))
CONVERT(varchar(4000),[字段名])
9)oracle类型转换
to_date()
to_number()
to_char()
10)sql将截断字符串或二进制数据。语句已终止!
原因为字符宽度不够长,增加长度 如varchar(10) 改为varchar(50)
11)sql字段以逗号隔开
物料 供应商 百分比
aa 11 50
aa 22 60
bb 33 100
结果为
物料 供应商 百分比
aa 11,22 50,60
bb 33 100
解决办法为
SELECT item,gys=CAST(gys as varchar(100))
INTO #t FROM #t1
ORDER BY item
DECLARE @item varchar(100),@gys varchar(100)
UPDATE #t SET
@gys=CASE WHEN @item=item THEN @gys+','+gys ELSE gys END,
@item=item,
gys=@gys
SELECT item,gys=MAX(gys) into #t4 FROM #t GROUP BY item order by item
update buy set buy.gys=#t4.gys from #t4 where #t4.item=buy.item
再写一个同样的语句做百分比的更新
12)sql 用语句创建外键同步改动关联表
ALTER TABLE [TB] WITH CHECK ADD FOREIGN KEY([外键字段])
REFERENCES [外键表] ([键字段])
ON UPDATE CASCADE--级联更新
ON DELETE CASCADE--级联删除
13)sql保留两位小数
select cast(4393./100 as numeric(10,2))
14)sql 中case when的用法
select case when CHARINDEX(',',aa)>0 then SUBSTRING(aa,0,charindex(',',aa,0)) else aa end from如果分开则为
答:如果想从表里取值到oracle,则erpcx:=trim(aq1.fieldbyname('erpcx').AsString);
否则直接用控件名字
语句为
with aperp do
begin
connection:=dm.ADOCerp;
parameters.Clear;
procedurename:='pc_erpbominquery';
parameters.CreateParameter(erpcx,ftstring,pdinput,60,erpcx); 此句为传参数语句
否则直接用 Parameters.CreateParameter('@erpcx',ftString,pdInput,100,edit5.text);
ExecProc;
end;
2)sql取四舍五入职 round(字段名,小数点后位数如取整数为0)
3)sql连接同一服务器的不同表的数据
答:select * from 数据库名.dbo.表名
4)要想从多个表里查数据,a里有5个 b里有3个 c里有2个显示时该如何去掉重复的部分呢
如 表a 表b 表c
id education id guanxi id work
0001 1大学 0001 父子 0001 1公司
0001 2大学 0001 母子 0001 2公司
0001 3大学 0001 姐妹
0001 4大学
答:alter table a add px int identity(1,1)
go
alter table b add px int identity(1,1)
go
alter table c add px int identity(1,1)
go
select a.id,a.education,guanxi=isnull(b.guanxi,''),[work]=isnull(c.[work],'') from a
left join b on a.px=b.px
left join c on a.px=c.px
go
alter table a drop column px
go
alter table b drop column px
go
alter table c drop column px
5)sql查询重复数据方法
select erpcx from n7cpl
group by erpcx
having Count(erpcx)>1
6)sql日期函数
Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --月的第一天
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) -- 周一第一天
Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) --季度的第一天
Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --上月最后一天
select datediff(day,2009-05-03,2009-05-01) --计算间隔天数
select dateadd(day,2,'2009-06-30 08:08:00') -- 计算2天后的日期
7)sql查询表中一半的数据(50%)
SELECT TOP 50 PERCENT * FROM Persons
8)sql类型转换
CAST([字段名] as varchar(4000))
CONVERT(varchar(4000),[字段名])
9)oracle类型转换
to_date()
to_number()
to_char()
10)sql将截断字符串或二进制数据。语句已终止!
原因为字符宽度不够长,增加长度 如varchar(10) 改为varchar(50)
11)sql字段以逗号隔开
物料 供应商 百分比
aa 11 50
aa 22 60
bb 33 100
结果为
物料 供应商 百分比
aa 11,22 50,60
bb 33 100
解决办法为
SELECT item,gys=CAST(gys as varchar(100))
INTO #t FROM #t1
ORDER BY item
DECLARE @item varchar(100),@gys varchar(100)
UPDATE #t SET
@gys=CASE WHEN @item=item THEN @gys+','+gys ELSE gys END,
@item=item,
gys=@gys
SELECT item,gys=MAX(gys) into #t4 FROM #t GROUP BY item order by item
update buy set buy.gys=#t4.gys from #t4 where #t4.item=buy.item
再写一个同样的语句做百分比的更新
12)sql 用语句创建外键同步改动关联表
ALTER TABLE [TB] WITH CHECK ADD FOREIGN KEY([外键字段])
REFERENCES [外键表] ([键字段])
ON UPDATE CASCADE--级联更新
ON DELETE CASCADE--级联删除
13)sql保留两位小数
select cast(4393./100 as numeric(10,2))
14)sql 中case when的用法
select case when CHARINDEX(',',aa)>0 then SUBSTRING(aa,0,charindex(',',aa,0)) else aa end from