想在原表中删除:及其之后的字符。求语句

oiph 2019-06-18 03:37:58


SQL Server 2008,现有表TB,表TB中含有“地址”列。
“地址”列中,有时会出现半角":",想在原表中删除:及其之后的字符。求语句。
原表代码:
create table TB(地址 nvarchar(255),编号 nvarchar(255))
insert into TB select '南通街:燕华路西25米','99782-50894'
insert into TB select '丁山镇小坡:D60县道北','93201-32541'
insert into TB select '闪松苍道之西:051d南侧','98833-11223'
insert into TB select '此处无人','98833-10223'

想达成的效果是,通过语句运行,在原表中把表里的地址列内容直接变成:
地址 编号
南通街 99782-50894
丁山镇小坡 93201-32541'
闪松苍道之西 98833-11223'
此处无人 98833-10223'



谢谢各位大神!
...全文
45 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oiph 2019-06-18
  • 打赏
  • 举报
回复
多谢两位大神,完美解决!
唐诗三百首 2019-06-18
  • 打赏
  • 举报
回复

update TB
 set 地址=case when charindex(N':',地址)>0 
               then substring(地址,1,charindex(N':',地址)-1)
               else 地址 end


select * from TB

/*
地址                                                 编号
-------------------------------------------------- --------------------------------------------------
南通街                                                99782-50894
丁山镇小坡                                              93201-32541
闪松苍道之西                                             98833-11223
此处无人                                               98833-10223

(4 行受影响)
*/
oiph 2019-06-18
  • 打赏
  • 举报
回复
感谢RIN-1大神! 你的方案应当只是查看功能,而不是在原表中修改字段。我想达成的是在原表中直接删除:,及:之后的字符。
RINK_1 2019-06-18
  • 打赏
  • 举报
回复

SELECT CASE WHEN CHARINDEX(':',地址)>0 THEN SUBSTRING(地址,1,CHARINDEX(':',地址)-1) ELSE 地址 END
FROM TB

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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