求一个简单的SQL语句,在线等!!!

SoftwareClub 2004-09-06 03:11:54
在SQL Server2000数据库中,有一个表tblTest,表中有如下字段和记录:

A B
---------------
ab.bc.cd.d
ab.
a

就是说如果B字段的字符串含有'.',则把第一个'.'前的子串update给那一条记录的A字段,同时B字段删除赋给A的那一段子串以及第一个'.';如果B字段中的字符串不含'.',则把整个B字段update给A字段;然后整个B字段为''。最后的效果就是:

A B
--------------
ab bc.cd.d
ab
a

应该怎样写SQL?
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsxaa 2004-09-06
  • 打赏
  • 举报
回复
update tblTest set
a=(case when charindex('.',b)=0 then b else left(b,charindex('.',b)-1) end),
b=(case when charindex('.',b)=0 then '' else stuff(b,1,charindex('.',b),'') end)
SoftwareClub 2004-09-06
  • 打赏
  • 举报
回复
用楼上兄弟的代码,错误提示:缺少更新或刷新的键列信息。
SoftwareClub 2004-09-06
  • 打赏
  • 举报
回复
可是B是ntext类型,用len(B)的时候说是len的第一个参数无效。。。
gaodongsheng 2004-09-06
  • 打赏
  • 举报
回复
不好意思看错了A多了个点
用这个:
update tblTest set
A=(case when charindex('.',B)=0 then B else substring(B,1,charindex('.',B)-1) end),
B=(case when charindex('.',B)=0 then '' else substring(B,charindex('.',B)+1,len(B)-charindex('.',B)) end)
gaodongsheng 2004-09-06
  • 打赏
  • 举报
回复
我也来写一个:
测试:
insert into tblTest
select '','ab.bc.cd.d'
union select '','ab.'
union select '','a'


update tblTest set
A=(case when charindex('.',B)=0 then B else substring(B,1,charindex('.',B)) end),
B=(case when charindex('.',B)=0 then '' else substring(B,charindex('.',B)+1,len(B)-charindex('.',B)) end)



select * from tblTest

drop table tblTest

结果:
A B
-------------------
a
ab.
ab. bc.cd.d
skyboy0720 2004-09-06
  • 打赏
  • 举报
回复
update tbltest
set A=case when charindex('.',B)>0 then left(B,len(charindex('.',B))-1) else B end,
B=case when charindex('.',B)>0 then right(B,len(charindex('.',B))-1) else null end

大概就这样吧!
pbsql 2004-09-06
  • 打赏
  • 举报
回复
update tblTest set
a=(case when charindex('.',b)=0 then b else left(b,charindex('.',b)-1) end),
b=(case when charindex('.',b)=0 then '' else right(b,len(b)-charindex('.',b)) end)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧