免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1133 | 回复: 0
打印 上一主题 下一主题

SQLSERVER遇到问题以及解决办法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-21 13:29 |只看该作者 |倒序浏览

                                问题1:从一个字符串“2\33\445\12”分别取出2,33,445,12。
解决办法:利用parsename,replace两个函数,下面是示例
create table tb(f_qymc varchar(20))
insert into tb values('2/33/351/8')
insert into tb values('3/33/351/8')
insert into tb values('4/33/351/8')
insert into tb values('5/33/351/8')
insert into tb values('6/33/351/8')
go
select
PARSENAME(replace(f_qymc,'/','.'),4) col1,
PARSENAME(replace(f_qymc,'/','.'),3) col2,
PARSENAME(replace(f_qymc,'/','.'),2) col3,
PARSENAME(replace(f_qymc,'/','.'),1) col4
from tb
drop table tb
/*
col1 col2  col3   col4   
---- ----- ------ ----
2    33    351    8
3    33    351    8
4    33    351    8
5    33    351    8
6    33    351    8
(所影响的行数为 5 行)
*/
问题2:
1,if @lx=1 or @lx=2 and @err =3//目的是得到条件是:@lx为1,或者@lx为2,并且在lx=1或者2的条件下@err必须为3
2,select * from xt_test where f_id=0 or f_id =1 and f_no =3
像上两种写法就会出现逻辑错误,这时就应该用括号加以限制,上述两条语句修改为:
if (@lx=1 or @lx=2) and @err=3
select * from xt_test whre (f_id=0 or f_id=1) and f_no=3
问题3:
让某一列的编号自动+1增长
语法:思路就是找到最大值,然后+1即可
select @bh=isnull(max(f_bhint),0)+1 from xt1_pgd
if @@error>0
  begin
     set @err=@@error
     rollback tran
     goto finish
end  
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63828/showart_571080.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP