TA的每日心情 | 难过 2024-5-29 23:05 |
---|
签到天数: 143 天 [LV.7]常住居民III
|
发表于 2010-9-19 08:18:02
|
显示全部楼层
还有更多的没?给你补充一些吧
以jxc_dj_ls_1为例
下边的例子是把2009-03-16替换为2008-05-12
update jxc_dj_ls_1 set yyyymmdd=convert(datetime,replace(convert(char(100),yyyymmdd),'03 16 2009','05 12 2008'))
判断条形码和编码是否有字母
select * from jxc_bm_sp where bm like'%[a-z]%'
select * from jxc_bm_sp where barcode like'%[a-z]%'
从数据库中导出导入数据
unload table jxc_dj_xs_2 to 'c:\jxc_dj_xs_2.txt';
unload select * from jxc_dj_xs_2 where bm_sp='50016' to 'c:\1.txt';
load table jxc_dj_xs_2 from 'c:\1.txt';
---- 清除指定数据库各个表中所有的记录。
use database ---打开指定的数据库名
declare @name varchar(140) declare deletecursor cursor for select name from datebawse.dbo.sysobjects where xtype=‘U‘ ---U是得到所有的用户建立的表
open deletecursor fetch next from ##cursor into @name.
--查询指定的表在那些数据库中存在
declare @tbname sysname
set @tbname='客户资料'
declare @dbname sysname,@sql nvarchar(4000),@re bit,@sql1 varchar(8000)
set @sql1=''
declare tb cursor for select name from master..sysdatabases
open tb
fetch next from tb into @dbname
while @@fetch_status=0
begin
set @sql='set @re=case when exists(select 1 from ['
+@dbname+']..sysobjects where xtype=''U'' and name='''
+@tbname+''') then 1 else 0 end'
exec sp_executesql @sql,N'@re bit out',@re out
if @re=1 set @sql1=@sql1+' union all select '''+@dbname+''''
fetch next from tb into @dbname
end
close tb
deallocate tb
set @sql1=substring(@sql1,12,8000)
exec(@sql1)
UPDLOCK
读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。
这是SqlServer2000中对更新锁的说明.
当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改,我如下示例:
BEGIN TRANSACTION --开始一个事务
SELECT Qty
FROM myTable WITH (UPDLOCK)
WHERE Id in (1,2,3)
UPDATE myTable SET Qty = Qty - A.Qty
FROM myTable AS A
INNER JOIN @_Table AS B ON A.ID = B.ID
COMMIT TRANSACTION --提交事务
这样在更新时其它的线程或事务在这些语句执行完成前是不能更改ID是1,2,3的记录的.其它的都可以修改和读,1,2,3的只能读,要是修改的话只能等这些语句完成后才能操作.从而保证的数据的修改正确.
两个数据库之间的表导数据。
insert into pro1..sys_user select * from pro..sys_user;
//delete pro1..sys_user;
查询供应商名字超过30个字
select * from jxc_bm_dw where len(mc)>50 and lx=2
a. 要查询出商品当前商品库存单价为负数的仓库、商品编码、商品名称、单位、当前库存数量,库存单价、库存金额。
答:
select a.bm_ck,a.bm_sp,b.mc,b.dw, a.sl_qm,a.dj_cb,a.je_qm from jxc_zb_sp_kc a ,jxc_bm_sp b where a.bm_sp=b.bm and sl_qm<0
b. 例如有一个编码001的会员卡类别,对应的是零售价,但是我们手工把此类别的卡对应的折扣方式改为会员价,这样在会员卡类别001下的所有的会员卡也要更改为会员价的方式》
答:
update jxc_bm_hyklb set zk=1, zk_fs='hyj' where bm='001'
update jxc_bm_hyk set zk=1 zk_fs='hyj' where bm_lb='001'
c)发现有积分运算不正确,那我要查询出2007-07-14日在零售表头的积分和表体的总分和有不正确的单据。
答:
select * from jxc_dj_ls_1_old a ,(select dh,bm_gsjg, sum(jf)as jf from jxc_dj_ls_2_old group by dh,bm_gsjg)b where a.dh=b.dh and a.bm_gsjg=b.bm_gsjg and a.jf<>b.jf and a. yyyymmdd >= '2007-07-14 00:00:00:00'and a.yyyymmdd <= '2007-07-14 23:59:59:99'
d)在商业连锁版中,总部想把全部商品的批发价格更改为零售价的0.9折,但是不是开单是用sql语句,执行完成后直接点数据交换就可以把更新的数据下载下来?
答:
在总部执行语句:
update jxc_bm_sp set dj_pf=dj_ls*0.9
在分部执行语句:
update jxc_remote_a_n_last_edit set n_last=0 where table_name='jxc_bm_sp'
e) 删除零售单表头中dh,bm_gsjg 在零售表头中有相同的记录的数据,比如零售表头有两条记录如1、dh=1001,bm_gsjg='00',2、dh='1002',bm_gsjg='00'但是表体中有的数据只有一条,1、dh=1001,bm_gsjg='00',这样语句执行以后就会删除表头中1、dh=1001,bm_gsjg='00'的记录.
答:
方法一:
零售记账后:
查询出单号,公司机构相同的记录:
select a.dh,a.bm_gsjg from jxc_dj_ls_1_old a, jxc_dj_ls_2_old b
where a.dh=b.dh and a.bm_gsjg=b.bm_gsjg
再删除找出的单号和公司机构:
delete from jxc_dj_ls_1_old where dh='' and bm_gsjg=''
零售记账前:
查询出单号,公司机构相同的记录:
select a.dh,a.bm_gsjg from jxc_dj_ls_1 a, jxc_dj_ls_2 b
where a.dh=b.dh and a.bm_gsjg=b.bm_gsjg
再删除找出的单号和公司机构:
delete from jxc_dj_ls_1 where dh='' and bm_gsjg=''
方法二:
或者直接用删除语句:
delete jxc_dj_ls_1_old from jxc_dj_ls_1_old a,jxc_dj_ls_2_old b where a.dh=b.dh and a.bm_gsjg=b.bm_gsjg
delete jxc_dj_ls_1 from jxc_dj_ls_1 a,jxc_dj_ls_2 b where a.dh=b.dh and a.bm_gsjg=b.bm_gsjg |
评分
-
查看全部评分
|